如何禁用Webpack中的热模块替换以进行生产

lai*_*ang 5 webpack

捆绑生产时如何删除HMR的所有参考?

我的生产Webpack配置没有对HMR的引用,但是在浏览器调试器中,客户端不断对/ __ webpack_hmr进行xhr调用

谁能阐明这一点?

-我的配置

var path = require('path');
var webpack = require('webpack');

module.exports = {
entry: [
      path.resolve(__dirname, 'master/jsx/App')
    ],
    output: {
        path: path.resolve(__dirname, 'build'),
        publicPath: '/dist/',
        filename: 'app.bundle.js'
    },
    cache: false,
    devtool: 'sourcemap',
    resolve: {
        extensions: ['', '.js', '.jsx']
    },
    plugins: [
        new webpack.optimize.OccurenceOrderPlugin(),
        new webpack.DefinePlugin({
            'process.env.NODE_ENV': '"production"'
        }),
        new webpack.optimize.UglifyJsPlugin({
            compressor: {
                warnings: false
            }
        })
    ],
    module: {
        loaders: [{
            test: /\.jsx?$/,
            exclude: /node_modules/
        }, {
            test: /\.jsx?$/,
            exclude: /node_modules/,
            loader: 'babel',
            query: {
                presets: ['es2015', 'react'],
                compact: false
            }
        }, {
            test: /\.css$/,
            loader: "style-loader!css-loader"
        }, {
            test: /\.woff|\.woff2|\.svg|.eot|\.ttf/,
            loader: 'url?prefix=font/&limit=10000'
        }]
    }
};
Run Code Online (Sandbox Code Playgroud)

小智 3

取决于您如何设置配置。我有一个节点环境变量,它告诉我是否在生产模式下运行。如果不是生产环境,我会在 server.js 中使用以下内容设置 webpackDevMiddleware。

if (process.env.NODE_ENV !== 'production') {
    app.use(connectLiveReload());
    let config = require('./webpack.config'),
        compiler = webpack(config);

    app.use(webpackDevMiddleware(compiler, {
        noInfo:     true,
        publicPath: config.output.publicPath
    }));

    app.use(webpackHotMiddleware(compiler));
}
Run Code Online (Sandbox Code Playgroud)