【发布时间】:2017-08-18 21:12:20
【问题描述】:
我正在使用 webpack 2.2.1 构建一个用于生产的 react-redux 应用,但似乎无法将 process.env.NODE_ENV 设置为 production。
这里是 webpack.config.js:
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 中的脚本:
"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 文件有问题,但我无法弄清楚它是什么。
【问题讨论】:
-
它适用于我的出口。 "build": "export NODE_ENV=production npm run clean && webpack -p",
-
谢谢,成功了!你知道为什么我这里需要导出,因为在其他脚本中,我不需要使用导出吗?
-
我真的不知道为什么这不起作用..它在没有导出的情况下对我来说很好。这是我的构建脚本:cross-env NODE_ENV=production webpack-dev-server --progress --color
标签: javascript node.js reactjs webpack