npm スクリプト:process.argv プロパティ、-- オプション、環境変数、その他の方法
JavaScript、Node.js、npm におけるコマンドライン引数の受け渡し
このチュートリアルでは、npm スクリプトにコマンドライン引数を渡す 2 つの方法について説明します。
方法 1: process.argv プロパティを使用する
Node.js では、process.argv
プロパティを使用して、コマンドライン引数にアクセスできます。これは文字列の配列であり、最初の要素は実行される Node.js 実行ファイルのパス、2 番目の要素は実行されるスクリプトファイルのパス、3 番目以降の要素はコマンドライン引数になります。
以下の例では、index.js
というスクリプトに 2 つの引数を渡します。
$ npm run start arg1 arg2
index.js
の内容:
console.log(process.argv);
// 出力例:
// [
// '/usr/local/bin/node',
// '/path/to/index.js',
// 'arg1',
// 'arg2'
// ]
方法 2: -- オプションを使用する
npm 2.0.0 以降では、--
オプションを使用して、スクリプトに直接引数を渡すことができます。このオプションは、オプションの終わりを示すために getopt によって使用されます。
$ npm run start -- arg1 arg2
console.log(process.argv);
// 出力例:
// [
// '/usr/local/bin/node',
// '/path/to/index.js',
// 'arg1',
// 'arg2'
// ]
process.argv
プロパティを使用する方法は、よりシンプルで汎用性が高いです。--
オプションを使用する方法は、より明確で読みやすいコードになります。
このチュートリアルでは、npm スクリプトにコマンドライン引数を渡す 2 つの方法について説明しました。どちらの方法を選択するかは、個人的な好みや状況によって異なります。
補足
- npm スクリプトに渡された引数は、
process.argv
プロパティを使用してスクリプト内でアクセスできます。 --
オプションは、npm 2.0.0 以降でのみ使用できます。- 詳細については、npm の公式ドキュメントを参照してください。
process.argv プロパティを使用する
// index.js
console.log(process.argv);
// 例:
// $ npm run start arg1 arg2
// 出力:
// [
// '/usr/local/bin/node',
// '/path/to/index.js',
// 'arg1',
// 'arg2'
// ]
-- オプションを使用する
// index.js
console.log(process.argv);
// 例:
// $ npm run start -- arg1 arg2
// 出力:
// [
// '/usr/local/bin/node',
// '/path/to/index.js',
// 'arg1',
// 'arg2'
// ]
- これらの例は、基本的な使用方法を示しています。
- より複雑なユースケースの場合、
commander
などのライブラリを使用することができます。
コマンドライン引数を npm スクリプトに渡すその他の方法
環境変数を使用して、コマンドライン引数をスクリプトに渡すことができます。これは、スクリプトを実行する前に環境変数を設定する必要があるため、あまり一般的ではありません。
例:
# 環境変数を設定
export ARG1="arg1"
export ARG2="arg2"
# スクリプトを実行
npm run start
console.log(process.env.ARG1, process.env.ARG2);
// 出力:
// arg1 arg2
yargs
などのライブラリを使用して、コマンドライン引数を解析することができます。これらのライブラリは、引数の検証やデフォルト値の設定など、より高度な機能を提供します。
// index.js
const argv = require('yargs')
.option('arg1', {
type: 'string',
required: true,
})
.option('arg2', {
type: 'string',
})
.argv;
console.log(argv.arg1, argv.arg2);
// 例:
// $ npm run start --arg1 arg1 --arg2 arg2
// 出力:
// arg1 arg2
特定のタスクランナーを使用する
grunt
や gulp
などの特定のタスクランナーは、コマンドライン引数を処理する独自の機能を提供します。これらのタスクランナーを使用している場合は、ドキュメントを参照して、コマンドライン引数を処理する方法を確認してください。
コマンドライン引数を npm スクリプトに渡す方法はいくつかあります。どの方法を選択するかは、個人的な好みや状況によって異なります。
javascript node.js npm