2017-03-26 12 views
2

webpack 2.2.1を使用してプロダクション用のreact-reduxアプリケーションを作成しましたが、process.env.NODE_ENVproductionに設定することはできません。webpackでNODE_ENVをプロダクションに設定できません

var webpack = require('webpack'); 
var path = require('path'); 
var ExtractTextPlugin = require("extract-text-webpack-plugin"); 
var HtmlWebpackPlugin = require('html-webpack-plugin'); 

const VENDOR_LIBS = [ 
    'axios', 'lodash', 'react', 'react-dom', 'react-redux', 
    'react-router', 'redux', 'redux-form', 'redux-thunk' 
]; 

module.exports = { 
    entry: { 
    bundle: './src/index.js', 
    vendor: VENDOR_LIBS 
    }, 
    output: { 
    path: path.resolve(__dirname, 'dist'), 
    filename: '[name].[chunkhash].js' 
    }, 
    module: { 
    rules: [ 
     { 
     use: 'babel-loader', 
     test: /\.js$/, 
     exclude: /node_modules/, 
     }, 
     { 
     test: /\.css$/, 
     use: ExtractTextPlugin.extract({ 
      fallback: "style-loader", 
      use: "css-loader" 
     }) 
     } 
    ] 
    }, 
    plugins: [ 
    new ExtractTextPlugin('style.css'), 
    new webpack.optimize.CommonsChunkPlugin({ 
     names: ['vendor', 'manifest'] 
    }), 
    new HtmlWebpackPlugin({ 
     template: 'src/index.html' 
    }), 
    new webpack.DefinePlugin({ 
     'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV) 
    }) 
    ], 
    devServer: { 
    historyApiFallback: true, 
    contentBase: './' 
    } 
}; 

そしてここでpackage.jsonの私のスクリプトです:ここ

はwebpack.config.jsある
"scripts": { 
    "clean": "rimraf dist", 
    "build": "NODE_ENV=production npm run clean && webpack -p", 
    "serve": "webpack-dev-server" 
} 

私はnpm run buildを実行

が、私のbundle.jsがコンパイルされますが、そうではありません生産のために。私のwebpack.config.jsでは、DefinePluginのオプションを 'process.env.NODE_ENV': '"production"'に置き換えました。だから私はpackage.jsonファイルに何か問題があると思っていますが、それが何であるかわかりません。

+0

それは輸出と私のために動作します。 "build NODE_ENV = production npm clean && webpack -p"、 –

+0

ありがとうございました!他のスクリプトでは、私は輸出を使う必要がないので、ここで輸出が必要な理由を知っていますか? –

+0

私は真剣になぜこのdoesntの仕事を知っていません..それはエクスポートなしで私のためにうまく動作します。これは私のビルドスクリプトです:cross-env NODE_ENV = production webpack-dev-server --progress --color –

答えて

5

ビルドコマンドnpm run cleanwebpack -pで2つのプロセスを実行しています。先頭にNODE_ENV=productionを追加すると、現在のプロセスにのみ適用されます。あなたの例では、NODE_ENV=production npm run clean && webpack -pは、cleanコマンドだけが設定された環境変数で実行されます。

export NODE_ENV=productionを追加すると、その端末から開始するすべてのプロセスに適用されます。同じ端末ウィンドウから実行するものはすべてNODE_ENV=productionに設定されているので、これを覚えておいてください。あなたは両方のプロセスの前にNODE_ENV=productionを追加し、他のプロセスのために固執するNODE_ENV=productionを持ってしたくない場合は

$ npm run build 
> NODE_ENV=production npm run clean && webpack -p 
... 
$ echo $NODE_ENV 
production 

は:

NODE_ENV=production npm run clean && NODE_ENV=production webpack -p 
関連する問題