簡體   English   中英

如何告訴npm在安裝時使用父項目的依賴項來構建模塊?

[英]How to tell npm to build module on install with the parent project's dependencies?

我想解釋一下npm模塊在安裝時的構建方式,下面舉一個例子:

當我查看GitHub上的material-ui npm模塊源時node_modules/material-ui但沒有構建文件,當我查看我的項目node_modules/material-ui目錄時,我可以看到該目錄僅包含已構建的文件(es5,uglify)。

我想了解魔術是如何發生的? 我看到package.json中有一個構建腳本,但是沒有什么可以告訴npm在安裝時運行它的,我還缺少什么?

謝謝

通常,模塊不會在客戶端計算機上構建,因為這將花費更多的時間,並且可能會失敗,因為它們使用的是不支持構建工具的舊版Node.js,因此構建工具當然需要也要安裝,這會使過程更長。 而是在發布之前先構建它。 GitHub上的內容與實際發布到npm注冊表中的內容不同。 大多數模塊不會將內置源檢入到GitHub中(盡管有些人更喜歡)。

Unpkg-material-ui所示,大概material-ui會手動執行此過程,並僅發布構建的源。

其他一些軟件包(例如redux)使用了prepublish鈎子,該鈎子在運行npm publish時會在發布之前構建必要的源( Redux prepublish hook ),這反映了已發布的軟件包,如您在Unpkg-Redux所見 它與GitHub上的原始資源非常接近,但僅包含相關文件,包括其.gitignore文件中的內置文件。 由於不需要發布大量文件(例如, test目錄, rollup.config.js等),並且僅占用客戶端空間,因此您可以package.json指定files以僅發布列出的文件( Redux文件 )。

您剛巧在發布時選擇了一個與material-ui相當混亂的程序包,而redux容易理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM