npm-scirptsとは
npm initを実行すると生成されるpackage.jsonに、“scripts”というプロパティがあります。
ここにワンライナーのシェルスクリプトと、そのエイリアスを設定できます。
以下のように記述して設定します。
{
...
"scripts": {
"server": "hexo server",
"start": "hexo server -o"
},
...
}
設定したnpm-scritpsはnpmコマンドで実行できるようになります。 key名によって以下の4つに分類され、それぞれ実行方式が異なります。
- 予約語のnpm-scripts
- フックされるnpm-scirpts
- 予約語ではないnpm-scripts
- 前後に実行されるnpm-scripts
予約語のnpm-scripts
予約語のnpm-scriptsは、npm ${name}の形式で実行できます。
- start
- restart
- stop
- test
予約されているのは名前だけのため、シェルスクリプトは自分で定義する必要があります。
フックされるnpm-scripts
あるコマンドが実行されるタイミングで実行されます。 詳細はnpmjs.comの公式ドキュメントをみてください。
予約語ではないnpm-scripts
予約語ではないnpm-scriptsは、npm run ${name}の形式で実行できます。
正式にはnpm run-sctipt ${name}ですが、長いのでエイリアスの方を使うことが多いです。
前後に実行されるnpm-scripts
コマンド名をのプレフィックスを以下のどちらかで始めることで、任意のコマンドの前後に設定させることができます。
- pre
- post
例えば、prestartは、startの前に実行されます。
まとめ
上記のようにnpm-scriptsはコマンド名によって挙動が変わります。 使いこなすことで開発時の繰り返しのタスクをある程度自動化できますので、ぜひ使ってみてください。