Webpack如何在生产模式下捆绑?

问题描述:

我正试图通过Gulp将我的React应用程序与Webpack进行捆绑。在捆绑之后,在Chrome中,“React Development Tools”工具栏呈红色,并告诉我“此页面正在使用React的开发版本”。如何使用生产版本进行捆绑?Webpack如何在生产模式下捆绑?

从的package.json:

"gulp": "^3.9.1", 
"gulp-webpack": "^1.5.0", 
"react": "^15.6.1", 
"uglifyjs-webpack-plugin": "^0.4.6", 
"webpack": "^2.6.1" 

下面是一口命令:

var gulp = require('gulp'); 
var webpack = require('gulp-webpack'); 
var webpackConfig = require('./webpack.config.js'); 

gulp.task('webpack', function(){ 
    return gulp.src('public_html/app/back/js/all.jsx') 
    .pipe(webpack(webpackConfig)) 
    .pipe(gulp.dest('dist/app/back/js')); 
}); 

这里是我的webpack.config.js:

const webpack = require('webpack'); 

module.exports = { 
    entry: './public_html/app/back/js/all.jsx', 
    output: { 
    path: `${__dirname}dist/app/back/js`, 
    filename: 'bundle.js' 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.jsx?$/, 
     loader: 'babel', 
     exclude: /node_modules/, 
     query: { 
      presets: ['react', 'es2015'] 
     } 
     }, 
     { 
     test: /\.scss$/, 
     exclude: /node_modules/, 
     loader: 'style-loader!css-loader!sass-loader' 
     }, 
     { 
     test: /\.css/, 
     loader: 'style-loader!css-loader' 
     } 
    ], 
    }, 
    plugins: [ 
    new webpack.DefinePlugin({ 
     'process.env': { 
     'NODE_ENV': JSON.stringify('production') 
     } 
    }) 
    ], 
}; 

谢谢。

在你的WebPack代码的插件数组,你需要添加以下

new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify('production') }), 
new webpack.optimize.UglifyJsPlugin({ 
    beautify: false, 
    mangle: { 
    screw_ie8: true, 
    keep_fnames: true 
    }, 
    compress: { 
    screw_ie8: true, 
    }, 
    comments: false, 
}), 
+0

谢谢你,但没有奏效。 React工具栏仍然为红色并显示相同的消息。控制台说:'警告:它看起来像你正在使用React的开发版本的缩小副本。将React应用程序部署到生产时,请确保使用跳过开发警告的生产构建,并且速度更快。有关更多详细信息,请参阅_facebook-link_。它改变了一些东西,因为吞吐量输出已经改变(“条件总是错误的”,“丢失无法访问的代码”等)。还有其他建议吗? –

+0

你是否在你的webpack脚本中使用了''-p'''标志? –

+0

我正在通过gulp(不是npm)运行webpack ...我会在哪里放置'-p'? –