本篇不开发新的功能,不过对目前的编译环境重新整理一下。
在webpack.config.js中添加读取环境变量NODE_ENV
...
var isProduction = (process.env.NODE_ENV === 'production');
...
...
var ExtractTextPlugin = require('extract-text-webpack-plugin');
...
var plugins_options = [
...
new ExtractTextPlugin('css/[name].css', {allChunks: true}),
...
];
var loaders = [
...
{
test: /\.css$/,
loader: ExtractTextPlugin.extract("style-loader", "css-loader" + (isProduction ? '' : '?sourceMap') + "!postcss-loader")
},{
test: /\.less$/,
loader: ExtractTextPlugin.extract("style-loader", "css-loader" + (isProduction ? '' : '?sourceMap') + "!postcss-loader!less-loader" + (isProduction ? '' : '?sourceMap'))
}
...
];
var webpackConfig = {
...
module: {
...
postcss: function () {
return [autoprefixer];
}
}
};
if(!isProduction){
plugins_options.push(new webpack.SourceMapDevToolPlugin({
test: /\.(js|css|less)($|\?)/i,
filename: '[file].map'
}));
}
if(isProduction){
plugins_options.push(new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
},
output: {
comments: false
}
}));
plugins_options.push(new webpack.optimize.OccurenceOrderPlugin());
}
if(!isProduction){
plugins_options.push(new webpack.HotModuleReplacementPlugin());
}
if(!isProduction){
entries.webpack_dev_client = 'webpack-dev-server/client?http://0.0.0.0:5000';
entries.webpack_hot_dev_server = 'webpack/hot/only-dev-server';
}
var devServer_options = {
host : '0.0.0.0',
port: 5000,
contentBase: ".",
progress: true,
hot: true,
inline: true,
stats: { colors: true },
noInfo: true,
historyApiFallback: true
};
var webpackConfig = {
...
devServer: devServer_options,
...
};
if(!isProduction){ webpackConfig.devtool = ‘eval’; }
var loaders = [
...
{
test: /\.(js|jsx)$/,
exclude: [/node_modules/], // exclude any and all files in the node_modules folder
loaders: ['babel-loader', 'eslint-loader', 'strict-loader']
}
...
];
npm install webpack-dev-server --global
npm install webpack-dev-server extract-text-webpack-plugin eslint-loader eslint strict-loader eslint-plugin-react babel-eslint style-loader css-loader postcss-loader postcss less-loader less autoprefixer file-loader url-loader img-loader --save-dev
"scripts": {
"serve-dev": "./node_modules/.bin/webpack-dev-server --progress",
"build-prod": "NODE_ENV=production ./node_modules/.bin/webpack --progress"
}
以后执行npm run serve-dev
就直接打开了webpack-dev-server
了,开发终于不用再依赖于nginx
了,直接访问http://127.0.0.1:5000/demo4/demo4.html
就可以看到页面效果,而且可以修改了代码后还可以热替换。 如果只想编译出最优化的代码,输入npm run build-prod
就好了。
前端应该会玩了吧,下篇我将开始说后端了。
本篇源代码地址