【问题标题】:How to get hot module replacement working in webpack& gulp?如何在 webpack 或 gulp 中进行热模块替换?
【发布时间】:2016-10-20 06:24:27
【问题描述】:

我已经为 reactjs 应用设置了 gulp 和 webpack 配置。这是我的 gulpfile 的片段:

gulp.task('webpack-dev-server', function(callback) {
    // modify some webpack config options
    var myConfig = Object.create(webpackConfig);
    myConfig.devtool = 'eval';
    myConfig.debug = true;
    myConfig.plugins = [
        new webpack.HotModuleReplacementPlugin()
    ];

    // Start a webpack-dev-server
    new WebpackDevServer(webpack(myConfig), {
        hot: true,
        stats: {
            colors: true
        }

    }).listen(9090, 'localhost', function(err) {
        if (err) throw new gulpUtil.PluginError('webpack-dev-server', err);
    });
});

这是我的 webpack.config:

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

module.exports = {
    cache: true,
    entry: ['webpack/hot/dev-server', './src/app.js'],
    output: {
        path: __dirname + '/src/js',
        publicPath: '/src/',
        filename: "bundle.js"
    },
    module: {
        loaders: [
            {
                test: /\.jsx?$/,
                exclude: /(node_modules|bower_components)/,
                loader: 'babel'
            }
        ]
    }
};

这是一个回购链接:https://github.com/dimitri-a/koekje

【问题讨论】:

    标签: reactjs gulp webpack-dev-server


    【解决方案1】:

    要让 react hot loader 工作,你需要添加 webpack-dev-server 和 react hot loader 插件

    npm install react-hot-loader --save-dev

    npm install webpack-dev-server --save-dev

    添加 devServer 配置(contentBase 是从哪里提供文件)并在加载器中的“babel-loader”之前添加“react-hot”

    最后你需要使用 2 个选项来运行 webpack-dev-server: webpack-dev-server --hot --inline

    var webpack = require('webpack');
    var path = require('path');
    
    /*
     * Default webpack configuration for development
     */
    var config = {
      devtool: 'eval-source-map',
      cache: true,
      entry: ['webpack/hot/dev-server', './src/app.js'],
      output: {
          path: __dirname + '/src/js',
          publicPath: '/src/',
          filename: "bundle.js"
      },
      module: {
        loaders: [{
          test: /\.jsx?$/,
          exclude: /node_modules/,
          loader: ['react-hot', 'babel-loader'],
          query: {
            presets: ['es2015','react']
          }
        }]
      },
    
      devServer: {
        contentBase: "./src",
        colors: true,
        historyApiFallback: true,
        inline: true
      },
    }
    
    module.exports = config;
    

    【讨论】:

    • 现在我得到:找不到多主模块中的错误:错误:无法解析 /Users/dimitri/hmr/koekje @ multi main 中的模块'react-hot,babel-loader'
    • 什么都没有显示
    • @bierhier 对于传递多个加载器,加载器键将数组作为输入。 loader: ['react-hot', 'babel-loader']
    猜你喜欢
    • 2018-01-17
    • 2018-09-22
    • 2017-08-27
    • 2017-06-20
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2018-08-20
    相关资源
    最近更新 更多