Npmコマンドでバッチスクリプトを実行することは可能ですか?
angularプロジェクトがあり、package.json
ファイルのscripts
セクションの下に、バッチスクリプトを実行するnpmコマンドを定義します。キーワードbash
を使用してシェルスクリプトを実行できることを知っています。
"start": "cd mydir && bash ./myscript"
次に、プロジェクトディレクトリでnpm start
を実行します。これにより、ディレクトリが変更され、myscript.sh
スクリプトが実行されます。 npmでバッチスクリプトを実行するための同等のキーワードは何ですか?
ここの初心者。これが重複した質問である場合は申し訳ありません。正しい用語を検索していないかもしれませんが、この質問の答えを見つけることができません。
この答えにコンテキストを提供するために、say-hello.bat
とsay-hello-cmd
という名前の2つのバッチファイルがあるとします。両方のバッチファイルには、次のような単純で不自然なコンテンツが含まれています。
echo Hello World
npm-scripts
を介して2つのバッチファイルのいずれかを呼び出すと、コンソールがログを記録することが期待されます。
Hello World
プロジェクトのディレクトリ構造:
ここで、プロジェクトディレクトリが次のように構成されていると仮定します。
.
├── a
│ └── b
│ ├── say-hello.bat
│ └── say-hello.cmd
├── package.json
├── say-hello.bat
├── say-hello.cmd
└── ...
ご覧のとおり、次のものがあります。
say-hello.bat
およびsay-hello.cmd
package.json
と同じレベルです。say-hello.bat
およびsay-hello.cmd
が保存されています。これらのパスは次のとおりです。a/b/
npm-scripts
npm
を介してこれらのバッチファイルを呼び出すには、package.json
のscripts
セクションを次のように定義する必要があります。
{
...
"scripts": {
"bat": "say-hello.bat",
"cmd": "say-hello.cmd",
"bat-in-sub-dir": "cd a/b/ && say-hello.bat",
"cmd-in-sub-dir": "cd a/b/ && say-hello.cmd"
},
...
}
プロジェクトディレクトリにcd
し、次のコマンドのいずれかを実行する場合:
npm run bat
npm run cmd
npm run bat-in-sub-dir
npm run cmd-in-sub-dir
バッチファイルが実行され、Hello World
という言葉がコンソールに正常に記録されます。
注
上記のこれらの例の顕著な違いは次のとおりです。
バッチファイルがプロジェクトディレクトリのルートに保存されている場合は、スクリプトでバッチファイルの名前を指定するだけです。例えば。
"bat": "say-hello.bat"
バッチファイルがプロジェクトディレクトリのサブディレクトリ(例:a/b/
)に保存されている場合、まずそのフォルダーにcd
し、実行するバッチファイルの名前を指定する必要があります。例えば。
"bat-in-sub-dir": "cd a/b/ && say-hello.bat"