2017-10-16 45 views
0

我有一个相当复杂的情况。的WebPack更换模块运行时间

我们正在建设与之反应,其是包裹着电子桌面应用程序,需要的WebPack通天transpilation和分块的照顾。

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

部分可以是JavaScript类需要覆盖一个驻留在应用程序。作为CMS指定的JS代码将是香草的Javascript代码(ES6/7/8一样的是我们使用的应用程序)

我看到2个问题在这里:

  1. 如何transpile眼前这个一类和

  2. 如何取代它在应用

运行时这甚至可能吗?

问候

回答

1

如果用“The application receives configuration data from a cms.”你的意思是运行时数据,然后,因为在编译时Webpack行为,它不能帮助你transpile /替换你的代码(Runtime vs Compile time)。

如果你的data from a CMS可以在编译时取出,那么请注意你可以return a promise from webpack.config.js

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; 
    }) 
    ; 
} 
+0

嗨。不幸的是,它是案例#1。我运气不好吗? – Thomas

+0

您可以修改您的CMS保存'transpiled version'是'运行code'的把它拿来作为一个正常的脚本到您的应用程序(如果你可以信任它)。 – Hitmands

+0

这也可以是一种替代方案。但是,我不确定是否加载转换后的类的版本实际上会覆盖应用中的版本,因为webpack使用标识符来加载转发的代码。所以,如果原始类别在内部被引用的时间为800(例如),那么CMS不保证接收相同的ID。 – Thomas