2017-04-21 25 views
1

それにもかかわらず、チュートリアルのようなdevDependenciesにあるmochaは十分に論理的です、それはすべてのdev依存関係です。なぜmochaはdevDependenciesになる必要がありますか?

実際には、-gをインストールすると、mochaをコマンドとして実行できます。そして、私が言うことができる限り、あなたのパッケージに言及されているかどうかはまったく違いはありません。

明示的にリストする必要はありませんか?

+1

あなたはノードモジュールからモカ実行可能ファイルを呼び出す、またはプログラムモカ構成で動作することができ、また、それがロックされますバージョン – Gntem

答えて

3

オープンソースプロジェクトで作業している場合、目標の1つは他の開発者がすぐに寄稿を開始できるようにすることです。

新しい開発者がテストを実行するだけでなく、プロジェクトをすぐに構築して実行できる可能性が高いことの1つがたくさんあります。そのためには、開発者がプロ​​ジェクトに貢献するために必要なすべてのツールを簡単にインストールする方法を提供することができます。

これには含まれています:

  • ビルドツール
  • テストツール
  • コード品質ツール(リンター)

を一方、プロジェクトのユーザーはするつもりはない可能性がありますそのうちのどれかが必要です。これは、dependenciesdevDependenciesを分割する正当な理由です。その上で


、それはあなたが、例えば、npm testを実行できるように、便利なscriptsを提供するために、あなたのpackage.jsonを編集すると便利です。その後npm testあなたnode_modulesから特定のmochaを実行しようとしている

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

:それは次のように指定するのが一般的です。

+0

くそ、それに打ちなさい – slebetman

4

グローバルにインストールすると、すべてのプロジェクトで1つのバージョンになります。

dev依存関係の場合、各プロジェクトはそのプロジェクト固有のバージョンを使用している可能性があり、プロジェクトは制御された方法で新しいバージョンに移行できます。

他のモジュールがグローバルにではなくプロジェクト固有にロードされているのとほぼ同じ議論です。

+1

ローカル依存関係で、グローバルパスを使用するときにmochaを使用するのではなく、相対パスで毎回mochaを実行する必要があることを示すのに役立つでしょう。 –

+2

@ ssc-hrep3:確かに、最近の人はnpmスクリプトや他のタスクランナーを使用する傾向があります...-) –

2

mochaをコマンドとして実行する必要がないためです。あなたはnode_modulesからそれを実行することができます:./node_modules/.bin/mocha

Npmはこれを特別にサポートしています。あなたはpackage.jsonに次がある場合:

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

を次に、あなたがモカがグローバルにインストールされていない場合でも、npm testを実行することができます。

だから、これはどういう意味ですか?まず、開発環境をセットアップするために他の開発者と共同作業する場合は、npm install以上のことをする必要はありません。

第二に、私はより有用だと思う、これはTravisのような他のツールを使ってプロジェクトを統合することを容易にされるなど

+1

もちろんTravisなどのツールを使うのは、あなたがあなたのレポに変更をプッシュするとき、私には個人的に私はちょうど人々がGithubで持っているそれらの派手なビルドバッジが欲しい:D – slebetman

関連する問題