2017-10-16 47 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