关闭Webpack的热重载功能

3
我使用Webpack创建了一个ReactJS应用程序。在本地使用npm start一切正常。我想使用webpack -p命令为prod部署一个简单的软件包,它给了我一个bundle.js。我将其附加上去,它也正常工作,但它仍在寻找我的本地服务器,这是热重新加载配置的一部分。我已经将hot:false更改了,但它仍在寻找它。
以下是我的webpack.config.js:
var path = require('path');
var webpack = require('webpack');


module.exports = {
  devtool: 'eval',
  entry: [
    'webpack-dev-server/client?http://csd.local.com:3000',
    'webpack/hot/only-dev-server',
    './src/index'
  ],
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: '/static/'
  },
  plugins: [
    new webpack.HotModuleReplacementPlugin(),
    new webpack.DefinePlugin({'process.env.NODE_ENV': JSON.stringify('production')})

  ],
  module: {
    loaders: [{
      test: /\.js$/,
      loaders: ['react-hot', 'babel'],
      include: path.join(__dirname, 'src')
    },
    {  test: /\.scss$/,
        loaders: ["style", "css", "sass"],
        include: path.join(__dirname, 'src')
    }
    ]
  }
};

这是我的server.js文件:

var webpack = require('webpack');
var WebpackDevServer = require('webpack-dev-server');
var config = require('./webpack.config');
new WebpackDevServer(webpack(config), {
  publicPath: config.output.publicPath,
  hot: false,
  historyApiFallback: true
}).listen(3000, 'localhost', function (err, result) {
  if (err) {
    return console.log(err);
  }

  console.log('Listening at http://csd.local.com:3000/');
});

我想要的是,在生产环境中关闭热重载。

1个回答

0

那是因为你让 webpack 把 HMRE 的客户端脚本与你的应用程序捆绑在一起:

'webpack-dev-server/client?http://csd.local.com:3000',
'webpack/hot/only-dev-server',**strong text**

解决方案是检测您当前所处的“开发”或“生产”环境。为此,您可以使用“yargs”来解析您的cli参数(它是webpack的依赖项,因此您甚至不必安装它),并使用结果动态构建配置。
var production = require('yargs').argv.p;

请参考完整示例http://pastie.org/10895795


你的链接已经失效。 - user

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接