2017-03-21 38 views
1

我正在構建一個我自己的工具來反編譯和打包相關的js文件(用ES6編寫)到一個包中。到目前爲止,它與本地文件一樣,但是當我來到公共模塊,例如,反應和redux等,它是不同的。我想知道如何將這些模塊包含到捆綁中?我發現在大多數分佈式版本的公共模塊中總是存在dist文件夾。因此,dist文件夾是否始終在任何模塊目錄中可用?是dist文件夾總是在節點模塊中可用

+0

不,這將取決於具體的第三方庫。 – jonrsharpe

+0

不,'@ angular'和'rxjs'等等,沒有'dist'文件夾。 – Arg0n

+0

那麼如何包含任何模塊的分佈式版本呢? – feiyuerenhai

回答

0

Webpack使用與Node.js相同的模塊分辨率。 node_modules有一個package.json其中有一個main字段,該字段確定在您的代碼中導入模塊時正在導入哪個文件。此外,webpack在package.json中查找browsermodule字段,如果它們存在,則優先選擇main。這使得發佈與常規Node.js構建不同的構建變得容易(例如使用ES模塊(import/export),但Node.js不支持這些構件,但是通過像webpack這樣的捆綁器)。此行爲可以使用選項resolve.mainFields進行配置。舉個例子,看看package.json of Redux

無這些字段是強制性的,但至少main應該存在,所以你可以簡單地導入一個模塊:自動

const module = require('module'); 

的WebPack:

import module from 'module'; 

或用require包括您導入到包中的模塊。


dist目錄沒有什麼特殊的,但它是很常見的有dist目錄中包含的UMD版本。特別是因爲Unpkg允許您導入節點模塊而無需手動將其發佈到CDN,因此它默認使用distumd(如主頁底部所述)。

+0

很多,現在我明白了。 – feiyuerenhai

相關問題