关闭webpack上的热重新加载

时间:2016-06-30 15:49:37

标签: reactjs webpack

我用webpack创建了一个reactjs应用程序。当地的一切都很好。只需使用npm start。我想用webpack -p命令为prod部署一个简单的包。它给了我一个bundle.js我附加它,它也工作正常。但它仍然在寻找我的本地服务器作为热重新加载配置的一部分运行。我变热了:假,但它还在寻找它。

这是我的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 :(得分: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

上的完整示例