npm スクリプト:process.argv プロパティ、-- オプション、環境変数、その他の方法

2024-04-02

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

特定のタスクランナーを使用する

gruntgulp などの特定のタスクランナーは、コマンドライン引数を処理する独自の機能を提供します。これらのタスクランナーを使用している場合は、ドキュメントを参照して、コマンドライン引数を処理する方法を確認してください。

コマンドライン引数を npm スクリプトに渡す方法はいくつかあります。どの方法を選択するかは、個人的な好みや状況によって異なります。


javascript node.js npm


【初心者向け】JavaScript でスタイル操作:css() で追加したスタイルの削除

この解説では、css() 関数で追加されたスタイルを削除する 3 つの方法を紹介します。css() 関数を使ってスタイルを削除するには、削除したいスタイルのプロパティに空の値 ("") を設定します。removeAttr() メソッドは、要素から属性を削除するために使用されます。css() 関数で追加されたスタイルは style 属性に設定されるため、removeAttr() メソッドを使って削除することができます。...


Bowerインストールの救世主!「bower command not found」エラーを完全解決する方法とは?

「bower command not found」エラーは、Node. jsパッケージマネージャーである「npm」を使用してフロントエンド開発ツール「Bower」をインストールした後に発生することがあります。これは、Bowerがグローバルにインストールされていないか、環境変数「PATH」にBowerのパスが設定されていないことを意味します。...


React.jsで子コンポーネントから親コンポーネントへpropsを渡す方法

子コンポーネントから親コンポーネントへpropsを渡すには、以下の2つの方法があります。propsオブジェクトを渡す子コンポーネント内で、propsオブジェクトに渡したいデータをプロパティとして追加します。上記のコードでは、ChildComponent内でprops...


【Node.js, Windows, npm】"npm ERR! Error: EPERM: operation not permitted, rename" エラーの解決方法 | 徹底解説

このエラーメッセージは、npm 操作中にファイルの移動や名前変更にアクセス許可がないことを示しています。 これは、主に以下の 2 つの原因が考えられます。ユーザー権限:管理者権限で実行していない: npm コマンドは、グローバルなインストールやキャッシュの更新など、一部の操作に管理者権限を必要とします。コマンドプロンプトを "管理者として実行" することで解決できます。...


ReactJSでテキストをクリップボードにコピー:Clipboard API、execCommand、ライブラリを使った方法

ブラウザのexecCommand APIを使用して、クリップボードにテキストをコピーする方法です。メリット:コードがシンプルで分かりやすい古いブラウザではサポートされていないコード例:Clipboard APIは、ブラウザの新しい標準APIで、より安全かつ簡単にクリップボードにアクセスできます。...


SQL SQL SQL SQL Amazon で見る



Node.jsプログラムでコマンドライン引数を簡単に扱う! 2つの方法とそれぞれのメリット・デメリット

process. argv プロパティは、Node. jsプログラムが起動された時に渡されたコマンドライン引数をすべて含む配列です。このプロパティを使って、コマンドライン引数にアクセスすることができます。例このコードを実行すると、以下の出力が得られます。


Node.js と npm で環境変数を設定する 3 つの方法

package. json ファイルに config プロパティを追加することで、環境変数を設定できます。この例では、API_KEY と DATABASE_URL という 2 つの環境変数を設定しています。この方法の利点は、以下のとおりです。