私はlodashカスタムビルドと同様のものを作ろうとしています。私はNPMビンでスクリプトを実行する方法をいくつかのチュートリアルを読んでパラメータを使用してnpm {bin:script.js}を実行する方法
を指定
だけカテゴリにカスタムモジュールを作成lodash category=collection,function
:だから一般的に、私は次のようにユーザーの書き込みコマンドをできるようにしたいです。私が何か間違ったことを理解した場合に備えて、私はそれを書いています。
だから私はこの部分でpackage.json持っている場合:
"main": "bin/index.js",
"bin": {
"snippet": "bin/index.js"
},
を、私はnpm install -g
コンソールコマンドスニペットをリッスンする必要があり、私はそれを書くときにフォルダbin
でスクリプトindex.js
を実行します。
この部分は正しく動作しているようです。 index.jsに何かシンプルなものがあると、すなわちconsole.log('It Works')
です。
標準的な状況では、ユーザーがスクリプトにパラメータを渡すようにしたいとします。だから、私はすべてのパラメータは、variabile process.argv
にする必要があることが分かった。
process.argv
プロパティは、Node.jsのプロセスが開始されたときに渡されたコマンドライン 引数を含む配列を返します。最初の 要素はprocess.execPathになります。 2番目の要素は、実行中のJavaScriptファイルへのパス になります。残りの要素は、追加のコマンドライン引数であれば になります。
私は単純にconsole.logとスクリプトを実行します。
私はコマンドでスクリプトを実行する場合は
snippet -f -a
出力は次のとおりです。[ 'node', 'path/to/file' ]
私は
node bin/index.js -f -a
出力を介してスクリプトを実行する場合は、次のとおりです。[ 'node', 'path/to/file', '-f', '-a' ]
私はそれを理解しない、その同じスクリプト異なる出力です。しかし、私はそれがパラメータを渡すことはありませんbinコマンドを介してスクリプトを呼び出すときのように見てみてください。
ここにこの経験がある人はいますか?そして、私が間違っていることを私に助言しますか?
また、これとは別のやり方でこれを行う方法もありますか?
ありがとうございました。
いいですね。あなたは他の旗、または長い旗で試しましたか?多分予約名を使用しています。 (つまり、[mocha source script](https://github.com/mochajs/mocha/blob/master/bin/mocha))。いくつかのコード例を表示できますか? – Dario
ちょっと@Darioあなたの答えに感謝します。ランダムな他の文字で試してみました。 mz package.jsonを編集して、同じファイルにテストを追加しました。これは正しく動作するので、たとえばnpmを呼び出すとテストカテゴリ= thisIsOneが呼び出されます。これは私にこの引数を表示します。もしnpmをスニペットでテストしても動作しません。 – Andurit
ちょっと@Dario私は解決策を見いだしました:)最も簡単な方法でそれを修正しますが、それは動作します。ご協力ありがとうございます – Andurit