我保持一個應用程序,是白標爲衆多獨立的品牌,有時會發生變化主要體現在風格,而且在覈心UX陣營。當前的(骨幹)解決方案包括將共享代碼保存在單獨的回購站中,然後使用Grunt構建獨立的應用程序,併爲每個生活在其自己文件夾中的項目提供大部分樣式代碼和一些視圖覆蓋。我們只需使用shell腳本一個接一個地運行所有的grunt任務。我們將在React中繼續構建這個新版本,並希望儘量減少重複代碼,現在這已經成爲舊版本中的主要問題。
期望的結果
的陣營本地打包建立在同一時間的應用程序的兩個版本。它看起來像import ComponentA from './ComponentA.js'
這樣的導入語句,並首先查找ComponentA.android.js
或ComponentA.ios.js
,然後如果未找到特定於平臺的導入語句,則會回退到導入ComponentA.js
。我想在Webpack中複製這種行爲。所以,我想有一個看起來像這樣的文件夾:
react_clients/src/components
|_ ComponentB.js // import ComponentA from './ComponentA.js';
|_ ComponentA.js
|_ ComponentA.brand1.js
|_ ComponentA.brand2.js
的WebPack應該建立ComponentB.js
如下:
brand1.bundle.js
從ComponentA.brand1.js
brand2.bundle.js
進口進口ComponentA.brand2.js
brand3.bundle.js
和brand4.bundle.js
從ComponentA.js
進口
這也適用於樣式,理想情況下使用相同的命名約定。
如果需要,可以爲每個版本單獨運行Webpack,可以使用不同的webpack.config文件或接受命令行參數。關鍵是避免重複應用程序代碼。
當前代碼
爲的WebPack的出發點是新鮮生成並排出create-react-app
項目。
PS:事先道歉,如果事實證明這是一個重複,但這是一個非常棘手的問題研究。我懷疑這個答案會與https://webpack.js.org/configuration/resolve/的高級配置有關,但是還不能確定。