Webpack替换模块运行时

时间:2017-10-16 12:03:09

标签: javascript webpack babel

我有一个相当复杂的场景。

我们正在构建一个包含Electron的React桌面应用程序,Webpack负责Babel的转换和分块。

应用程序从cms接收配置数据。

部分配置可能是需要覆盖驻留在应用程序中的一个javascript类。 CMS中指定的JS代码将是vanilla Javascript代码(ES6 / 7/8与我们用于应用程序的代码相同)

我在这里看到两个问题:

  1. 如何透露这一类和

  2. 如何在应用程序中替换它的运行时

  3. 这甚至可能吗?

    此致

1 个答案:

答案 0 :(得分:1)

如果使用“The application receives configuration data from a cms.”表示运行时数据,那么,因为Webpack在编译时起作用,它无法帮助您转换/替换代码({{ 3}})。

如果您的data from a CMS可以在编译时获取,那么请注意您可以Runtime vs Compile time

module.exports = function webpackConfig(env) {
  const configs = {
    context: __dirname,
    plugins: []
    // etc...
  };

  return CMS
    .fetchConfig()
    .then(cmsConfigs => {
      const vars = {
        replaceClass: JSON.stringify(cmsConfigs.classINeed.toString())
      };

      configs.plugins.push(new webpack.DefinePlugin(vars));
      return configs;
    })
  ;
}