2017-04-21 7 views
1

Auf den ersten Blick, Mocha in devDependencies wie die Tutorials sagen, ist logisch genug, es ist schließlich eine Dev-Abhängigkeit.Warum muss Mocha in devDependencies sein?

Aber in der Praxis installieren Sie es -g, so dass Sie Mocha als Befehl ausführen können. Und soweit ich das beurteilen kann, macht es keinen Unterschied, ob es in Ihrem Paket erwähnt wird.json.

Also muss es explizit aufgeführt werden?

+1

Sie Mokka ausführbare Datei von Knotenmodule aufrufen können, oder programmatisch mit Mokka-Konfiguration arbeiten, auch sperrt es Die Version – Gntem

Antwort

3

Wenn Sie an einem Open-Source-Projekt arbeiten, könnte eines Ihrer Ziele darin bestehen, anderen Entwicklern die Möglichkeit zu geben, schnell einen Beitrag zu leisten.

Eines der Dinge, die viel helfen, ist die Möglichkeit für einen neuen Entwickler, schnell in der Lage zu sein, Ihr Projekt zu erstellen und auszuführen, sowie die Tests auszuführen. Um dies zu tun, können Sie eine einfache Möglichkeit zur Installation aller Werkzeuge bereitstellen, die ein Entwickler haben sollte, um zu Ihrem Projekt beizutragen.

Dazu gehören:

  • Build-Tools
  • Testing Tools
  • -Code Qualitätswerkzeuge (Linter)

Auf der anderen Seite kann ein Benutzer Ihres Projekts wahrscheinlich nicht gehen Irgendwelche davon brauchen, was ein guter Grund ist, dependencies und devDependencies zu teilen.


Hinzu kommt, dass es nützlich ist Ihre package.json bieten nützliche scripts zu bearbeiten, so dass Sie zum Beispiel npm test laufen. Es ist üblich, so etwas wie zu spezifizieren:

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

Dann npm test wird die spezifische mocha von Ihrem node_modules laufen.

+0

Verdammt, schlage mich dazu – slebetman

4

Wenn Sie es global installieren, ist dies eine einzige Version für alle Ihre Projekte.

Wenn es sich um eine Entwicklerabhängigkeit handelt, kann jedes Projekt eine für dieses Projekt spezifische Version verwenden, und das Projekt kann auf neuere Versionen in einer kontrollierten Weise migrieren.

So ziemlich das gleiche Argument wie für das Laden anderer Module projektspezifisch statt global geladen werden.

+1

kann hilfreich sein, um zu sagen, dass man bei einer lokalen Abhängigkeit jedes Mal Mocha mit einem relativen Pfad ausführen muss, anstatt nur 'mocha' zu verwenden, wenn man den globalen verwendet. –

+2

@ ssc-hrep3: Sicher, obwohl die Leute heutzutage npm-Skripte und andere Task-Runner benutzen ... :-) –

2

Weil Sie mocha nicht als Befehl ausführen müssen. Sie können es von node_modules wie folgt ausführen: ./node_modules/.bin/mocha.

Npm hat spezielle Unterstützung dafür. Wenn Sie die folgenden in package.json haben:

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

Dann können Sie npm test ausführen, auch wenn Sie nicht global installiert Mokka.

Also, was nützt das? Zunächst einmal ist es eine gute Sache, wenn Sie mit anderen Entwicklern zusammenarbeiten - sie müssen nichts weiter tun als npm install, um die Entwicklungsumgebung einzurichten.

Zweitens, und ich denke, nützlicher, dann ist dies macht es einfach, Ihr Projekt mit anderen Tools zu integrieren, wie Travis usw.

+1

Natürlich ist die Verwendung von Tools wie Travis usw. schön, weil sie alle Tests ausführen Zeit, die Sie Änderungen zu Ihrem Repo schieben, aber zu mir persönlich Ich will nur diese schicken Buildabzeichen, die Leute auf Github haben: D – slebetman

Verwandte Themen