[英]package.json for global dependencies
在編寫node.js應用程序時,幾乎總是必須不僅處理本地依賴關系,而且還要處理應用程序所需的全局包。 最好的和常見的解決方法是什么? 我已經看到可以在預安裝階段運行npm
"scripts": {
"preinstall": "npm i -g grunt-cli"
}
雖然從npm腳本本身運行npm install很奇怪,但是我想這可行。
但是,如果需要安裝多個軟件包,則不是很方便。 是否可以告訴npm
從另一個文件(即package.global.json
獲取所有列出的軟件包並在全球范圍內安裝它們?
再有,是否有某種約定?
我認為在構建過程中需要全局模塊是代碼的味道 。 它們工作正常,但它們與npm
對抗,因為它們不能直接添加為依賴項。 相反,要使用包含bin
腳本的程序包執行,我建議使用package.json
的scripts
字段提供一組命令。
例如:
"dependencies": {
"grunt-cli": "..."
},
"scripts": {
"start": "grunt server",
"test": "grunt test"
}
當您運行npm start
, npm
會自動將grunt-cli
模塊的位置添加到PATH
,並執行grunt
命令以啟動服務器,然后運行npm test
將調用grunt
測試運行npm test
。 這也意味着您有一個非常不錯的地方,讓人們可以立即了解他們可以使用哪些命令,這有助於整個社區保持一致。 注意, start
和test
是npm
中的特殊名稱,因此對於其他任意命令,您需要運行npm run-script <scriptname>
通常,我會遵循以下模式:如果對於模塊的構建和運行至關重要,則不需要全局模塊,但是在需要時可以使用它們來支持增強的工作流程。 這里最主要的是,我將列出絕對關鍵的腳本。 可選地使用全局模塊沒有錯。 例如,您可能有大量的grunt命令,並且無法在package.json
列出每個排列,這很好。 對於您的機器,您可以全局安裝grunt-cli
以便您可以運行Gruntfile
公開的所有命令。
強制全局安裝並不是一個好主意。 您可以只在本地安裝這些軟件包。 全局腳本將在node_modules/.bin
文件夾中可用,並且在npm
腳本中也將此文件夾添加到路徑中,因此可以使npm run grunt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.