2017-06-07 15 views
1

私はNPMのスクリプトを理解するには、したがって、あなたは、単に以下のpackage.jsonを使用してnpm testを実行することができ、およびNPMは自動的にこれは便利な機能である./node_modules/.binnpmスクリプトはグローバルな依存関係よりもローカルの依存関係をどのように優先しますか?

"scripts": { 
    "test": "mocha" 
} 

で見つかったモカのローカルバージョンを使用します、ので、あなたのPATH./node_modules/.binを追加しますそれは私がこのようなpackage.jsonファイルの書き込み保存します。

"scripts": { 
    "test": "./node_modules/.bin/mocha" 
} 

しかし、私はモカがグローバルにインストールされている新しい開発者にもたらしますか?またはこれを事前設定されたグローバルパッケージの環境にプッシュする必要がありますか?私がpackage.json./node_modules/.bin/mochaでなくmochaという短い手紙を使用している場合、グローバルまたはローカルパッケージが優先されますか?

答えて

1

Node.jsは、最初にyour locally installed packagesを実行しようとします。

あなたはモジュールが必要な場合は、Node.jsのは、先祖のディレクトリ内のすべてのnode_modules /ディレクトリ(./node_modules/../node_modules/../../node_modules/、など)を介して行くことによって、それを探します。見つかった最初の適切なモジュールが使用されます。

Node.jsが必要なモジュールを解決する方法の詳細については、here is a nice breakdownを参照してください。

+0

これは有望そうですから、 '/ usr/local/bin'(グローバル)がチェックされる前に' ../../../../ node_modules/'が常に最初の適切なモジュールになります。甘い!ありがとう。 – Chris

関連する問題