[英]Why does “npm install <directory>” ignore devDependencies?
[英]Why does mocha need to be in devDependencies?
從表面上看,mocha像教程中所說的那樣處於devDependencies,這是合乎邏輯的,畢竟是dev的依賴。
但實際上,您可以將其安裝在-g位置,以便可以將mocha作為命令運行。 據我所知,無論是否在package.json中提到它,都沒有任何區別。
那么有必要明確列出它嗎?
如果您正在從事一個開源項目,那么您的目標之一就是讓其他開發人員能夠快速開始進行貢獻。
新的開發人員可以快速構建並運行您的項目以及運行測試,這對我們有很大幫助。 為此,您可以提供一種簡便的方法來安裝開發人員為項目做出貢獻所必須具備的所有工具。
這包括:
另一方面,您項目的用戶可能不需要這些,這是拆分dependencies
和devDependencies
一個很好的理由。
最重要的是,編輯package.json
以提供有用的scripts
非常有用,例如,您可以運行npm test
。 通常指定以下內容:
{
...
"scripts": {
...
"test": "mocha -opts mocha.opts ...tests..."
}
}
然后npm test
將運行您的node_modules
的特定mocha
。
如果您在全球范圍內安裝它,那么它將是所有項目中的單個版本。
如果是dev依賴項,則每個項目都可以使用特定於該項目的版本,並且該項目可以以受控方式遷移到較新的版本。
與使其他模塊加載特定於項目而不是全局加載幾乎相同的論點。
因為您不需要將mocha作為命令運行。 您可以像這樣從node_modules
運行它: ./node_modules/.bin/mocha
。
Npm為此提供了特殊支持。 如果package.json中包含以下內容:
"scripts": {
"test": "mocha"
},
"devDependencies": {
"mocha": "*"
}
然后,即使您未全局安裝摩卡,也可以執行npm test
。
那么,這有什么用? 首先,如果您與其他開發人員合作,這是一件很不錯的事情-他們不需要做任何事情,只需npm install
即可設置開發環境。
其次,我認為更有用的是,這使您可以輕松地將項目與Travis等其他工具集成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.