2016-08-02 57 views
0

我們有一個使用Webpack進行生產捆綁的node.js應用程序。Webpack軟件包動態客戶端配置

我們的問題是如何添加動態配置後,你已經有一個捆綁,而不需要重新捆綁?

在服務器端,我們可以使用節點env變量,但是如何才能完成客戶端捆綁?具體來說,我們需要告訴瀏覽器模塊要連接到哪個api服務器地址。

具有配置的js/json文件會導致配置值被注入到捆綁包中,因此不能隨後進行更改(以舒適的方式,無需打開捆綁文件並手動查找和替換)。

使用類似express-expose的東西不是我們想要的,因爲它會導致另一個網絡請求獲取數據,而我們的服務器地址是動態的。

節點配置等,不要在客戶端工作

+0

檢查此點是否爲您的解決方案:http://stackoverflow.com/questions/35408898/why-is-my-webpack-bundle-js-and-vendor-bundle-js-so-incredibly-big/35413001 #35413001 –

+0

@ViniciusVieira它看起來像是顯示瞭如何使用環境變量,而這些變量在瀏覽器中不可用 – omerts

+0

您是否可以使用不同的腳本創建不同的包? –

回答

1

您可以創造性地使用externals選項:

externals: [ 
    { appConfig: 'var appConfig' }, 
], 

如果您添加到您的配置你可以讓你的web服務器在加載webpack包之前在var appConfig = {"config":"value"};的某個地方添加一個腳本標記,然後一個簡單的require('appConfig')就會啓動它。

+1

感謝您的回答。實際上,我們最終讓服務器在包含全局配置變量的包之前添加一個腳本,但通過您的方法,我們可以通過webpack控制行爲。 – omerts