コマンドラインユーティリティを作成しようとしています。しかし、npm install(no -g)は実行可能ファイルをリンクしません。最小限のコマンドラインユーティリティ用package.json
私の期待するところは、npm installは自分の実行ファイルをローカルにインストールすることです。
マイpackage.jsonは、次のようになります。です
{
"name": "test-bin",
"version": "0.1.0",
"description": "Test bin",
"bin": "./bin/test-bin.js",
"main": "./index.js",
"author": "",
"license": "ISC",
"repository": {
"type": "git",
"url": "file:///tmp/test-bin.git"
}
}
index.jsを:
module.exports = function() {
console.log('invoked')
}
ビン/テストbin.jsは次のとおりです。
require('../')()
私はNPMを実行した場合install、node_modulesが作成されますが、.binではありません。
は、しかし、依存関係として最初に使用して別の場所で別のプロジェクト作成した場合:
{
"name": "test-test-bin",
"version": "0.1.0",
"description": "Test test bin",
"author": "",
"license": "ISC",
"repository": {
"type": "git",
"url": "file:///tmp/test-test-bin.git"
},
"dependencies": {
"test-bin": "file:///Users/you/somewhere/test-bin"
}
}
は、そのプロジェクト内のリンク実行可能ファイルをインストールNPM:
node_modules/.bin/test-bin
をNPMのドキュメントは、「ビン」について、こう述べています。
これを使用するには、ローカルのファイル名に コマンド名のマップであるあなたのpackage.jsonにビンフィールドを提供します。インストール時に、npmはグローバルインストールの場合は というファイルを接頭辞/ binにシンボリックリンクし、 のローカルインストールの場合は./node_modules/.bin/をシンボリックリンクします。
これは設計されたものなのでしょうか、それとも何か不足していますか?
これは私が守っていることです。それはドキュメントが何を言っているかと直接矛盾しているようです。だから、それはバグでしょうか、私はドキュメンテーションを誤解していますか、あるいは私がやる必要のあるプロセスに何かを残していますか? – wdkendall
ああ、ドキュメントがどういう意味か分かりました。ローカルインストールとは、実行可能ファイルを依存関係として持つパッケージのローカルインストールを意味します。 – wdkendall
あなたは正しいです:あなたはローカル( 'npm install package-name')とグローバル(' npm install package-name -g')のインストールがあります。違いはインストールされたパッケージが終わる場所です( '。/ node_modules'ローカルの場合はシステム全体の 'node_modules'をグローバルに使用します)。 _just_ 'npm install'を実行してもAFAIKのような名前はありませんが、依存関係をインストールするのは何ですか。 – robertklep