2016-11-29 77 views
0

處理將在瀏覽器上下文中運行的一組腳本,其中某些模塊(例如下劃線)將作爲全局模塊提供。但是,我要依賴node_modules中的require/import直接下劃線。編譯這些文件時可以將WebPack配置爲依賴全局下劃線實例,而不是在編譯的腳本中重複該庫?WebPack 2:用全局替換require'd模塊

回答

2

你要尋找的是Externals:在的WebPack

externals配置提供的不包括在包的依賴的方式。相反,創建的捆綁包依賴於該依賴關係來存在於消費者環境中。這通常適用於圖書館開發人員,但應用程序開發人員也可以充分利用此功能。

這甚至適用於模塊node_modules,爲的WebPack走整個依賴樹找出在所產生的包中包含的內容。

甚至還有一個example這是專門爲你的使用情況,它看起來像:

externals : { 
    lodash : { 
    commonjs: "lodash", 
    amd: "lodash", 
    root: "_" // indicates global variable 
    } 
} 

這句法被用來描述所有可能的方式,一個外部庫可以是可用的。 lodash在AMD和CommonJS模塊系統下可用作lodash,但在全局變量形式中以_表示。

0

如果您想要在加載軟件包時依賴環境中已有的庫,則需要使用externals

module.exports = { 
    externals: { 
     underscore: "_" 
    } 
} 

對象(underscore)的關鍵是你用什麼來導入,和值(_)是全局變量它會尋找。

require("underscore"); // Will return the _ variable from the global environment!