2017-04-21 70 views
1

就這一點而言,摩卡在devDependencies(如教程)中所說的足夠符合邏輯,畢竟它是dev的依賴關係。爲什麼摩卡需要在devDependencies中?

但實際上你安裝它-g所以你可以運行摩卡作爲一個命令。就我所知,鑑於這一點,它在package.json中提到的沒有任何區別。

那麼有沒有必要明確列出它?

+1

你可以叫摩卡可執行從節點模塊,或以編程方式與摩卡的配置工作,也鎖定整合版本 – Gntem

回答

3

如果您正在開發一個開源項目,您的目標之一可能是讓其他開發人員能夠快速開始貢獻。

對於新開發人員來說,快速構建和運行項目以及運行測試的可能性之一是很大的幫助。爲了做到這一點,您可以提供一種安裝開發人員爲了爲項目做出貢獻的所有工具的簡單方法。

這包括:

  • 構建工具
  • 測試工具
  • 代碼質量工具(棉短絨)

在另一方面,你的項目的用戶可能不會去需要任何這些,這是一個很好的理由分裂dependenciesdevDependencies


最重要的是,它是非常有用的編輯package.json提供有用的scripts這樣就可以,例如,運行npm test。這是常見的指定是這樣的:

{ 
    ... 
    "scripts": { 
     ... 
     "test": "mocha -opts mocha.opts ...tests..." 
    } 
} 

然後npm test將會從您的node_modules運行特定mocha

+0

該死,打我吧 – slebetman

4

如果您在全球範圍內安裝,那麼這是所有項目中的單一版本。

如果是開發依賴項,則每個項目都可以使用特定於該項目的版本,並且該項目可以以受控方式遷移到新版本。

與其他模塊加載項目特定而不是全局加載相同的論點。

+1

可能有助於說明,對於本地依賴項,您需要每次都使用相對路徑運行摩卡,而不是在使用全局配置時使用「mocha」。 –

+2

@ ssc-hrep3:當然,儘管現在人們總是傾向於使用npm腳本和其他任務運行者...... :-) –

2

因爲您不需要運行摩卡作爲命令。您可以像node_modules那樣運行它:./node_modules/.bin/mocha

Npm對此有特別的支持。如果你在的package.json如下:

"scripts": { 
    "test": "mocha" 
}, 
"devDependencies": { 
    "mocha": "*" 
} 

則可以執行npm test即使你沒有摩卡全球的裝機量也。

那麼,這有什麼用?首先,如果與其他開發人員協作,這是一件很好的事情 - 他們不需要做任何超過npm install的設置開發環境。

其次,我認爲更有用,這是很容易將項目與其他工具一樣Travis

+1

當然,使用Travis等工具是很好的,因爲他們每運行一次測試時間你推動你的回購變化,但對我個人而言,我只是想在Github上擁有那些奇特的構建徽章:D – slebetman