多重配置期间的webpack监视选项

webpack watch option during multi config

本文关键字:webpack 监视 选项 重配置      更新时间:2023-09-26

我已经为webpack创建了两个配置。

当我导出一个配置数组时:一切都正常,而不是监视选项。任务简单地完成了(并取得了成功)。

当我测试一个配置导出时,watch运行良好。

我试过多个切入点,手表那次也很好,但是配置看起来有点乱。

我会修改我的配置,希望得到建议,谢谢。

/* FRONT-END CONFIG */
var frontWebpackConfig = {
  entry: "./src/front/app",
  output: {
    path: __dirname + "/build",
    filename: "public/app.js"
  },
  watch: NODE_ENV == "development",
  watchOptions : {
    aggregateTimeout: 100
  },
  devtool : NODE_ENV == "development" ? "cheap-inline-module-source-map" : null,
  plugins : [
    new webpack.NoErrorsPlugin(),
    new webpack.DefinePlugin({
      NODE_ENV : JSON.stringify(NODE_ENV)
    })
  ],
  module : {
    loaders : [
      {
        test : /'.js$/,
        loader : 'babel',
        query: {
          presets: ['es2015']
        }
      },
      { test: /'.css$/, loader: "style-loader!css-loader" }
    ]
  }
};

/* BACK-END CONFIG */
var backWebpackConfig = {
  entry: "./src/back/server",
  target : 'node',
  output: {
    path: __dirname + "/build",
    filename: "server.js"
  },
  externals: nodeModules,
  watch: NODE_ENV == "development",
  watchOptions : {
    aggregateTimeout: 100
  },
  devtool : NODE_ENV == "development" ? "cheap-inline-module-source-map" : null,
  plugins : [
    new webpack.NoErrorsPlugin(),
    new webpack.DefinePlugin({
      NODE_ENV : JSON.stringify(NODE_ENV)
    })
  ],
  module : {
    loaders : [
      {
        test : /'.js$/,
        loader : 'babel',
        query: {
          presets: ['es2015']
        }
      }
    ]
  }
}

/* EXPORTS */
module.exports = [frontWebpackConfig, backWebpackConfig]

此外,我还检查了以下表达式:"NODE_ENV=="development"value,并尝试直接设置true。

更新:有趣的是,我刚刚尝试在命令行中使用"--watch"选项启动,效果很好。你知道为什么文件配置不起作用吗?

watch不是Webpack中的配置选项。正如您所建议的,当使用Nodeneneneba API:时,您需要在CLI上传递它,或者调用watch而不是run

compiler.watch({ ...watchOptions }, function(err, stats) {
    // ...
});

实际上,webpack 1.13.0+中有一个用于watch的选项。

但似乎,在几种配置(对象数组)的情况下,应该将watch属性设置为数组,以使其工作。最终将使用第一配置对象的CCD_ 7属性。

/* FRONT-END CONFIG */
var frontWebpackConfig = {
    entry: "./src/front/app",
    // ...
    watch: NODE_ENV == "development",
    watchOptions : {
        aggregateTimeout: 100,
    },
};
/* BACK-END CONFIG */
var backWebpackConfig = {
    entry: "./src/back/server",
    // ...
};
var configuration = [frontWebpackConfig, backWebpackConfig];
configuration.watch = true;
/* EXPORTS */
module.exports = configuration;

命令行中的--watch参数只是在配置加载和处理期间将watch属性设置为数组,这就是为什么使用CLI参数可以正常工作的原因。