npmのscriptsを使ってみる

package.json内に設定できる、npmのscriptsについていくつか試してみます。

サンプルコード

プロジェクトディレクトリに移動して、package.jsonを作成します。

npm init -y

まずは文字列を出力するだけのscriptsを追加してみます。

{
  ~ 略 ~
  "scripts": {
    "test": "echo 'test script'"
  },
  ~ 略 ~
}

追加したスクリプトを実行してみます。

npm run test

結果以下のように出力されました。

'test script'

特定のスクリプトにpreやpostを付与した別のスクリプトを追加すると、そのスクリプトの前後に実行されます。
preはそのスクリプトの前、postは後になります。

{
  ~ 略 ~
  "scripts": {
    "test": "echo 'test script'",
    "pretest": "echo 'pretest script'",
    "posttest": "echo 'posttest script'"
  },
  ~ 略 ~
}

再度コマンドを実行してみます。

npm run test

testの前にpretest、testの後にposttestが実行されました。

'pretest script'
'test script'
'posttest script'

上記の他に、ライフサイクルスクリプトと呼ばれる特定のタイミングで実行されるスクリプト名が用意されています。
今回はその中からpreinstall(npm installの直前に実行)と、postinstall(npm installでのインストール後に実行)を試してみます。

{
  ~ 略 ~
  "scripts": {
    "preinstall":  "echo 'preinstall script'",
    "postinstall":  "sass --version"
  },
  ~ 略 ~
}

preinstallでは文字列の出力、postinstallではインストールされたsassのバージョンを出力するようにしています。
テストする前にsassをインストールしておきます。

npm install sass --save-dev

node_modulesを除去してから npm install を実行してみると、preinstallとpostinstallそれぞれの出力を確認できました。

'preinstall script'
1.90.0 compiled with dart2js 3.8.3

最後にscriptsで設定したスクリプトを別のスクリプトで使用する例です。

{
  ~ 略 ~
  "scripts": {
    "taskA": "echo 'taskA script'",
    "taskB": "echo 'taskB script'",
    "test": "npm run taskA && npm run taskB"
  },
  ~ 略 ~
}

testを実行することで、taskAとtaskBを順に実行するように指定しました。
コマンドを実行してみます。

npm run test

以下のように意図した出力を確認できました。

'taskA script'
'taskB script'

補足として、複数の処理を繋ぐ際に「&」を使うと並列処理(バックグラウンドで順次実行される)、「&&」を使うと直列処理(上記の場合、taskAの処理が成功したらtaskBが実行される)となるようです。

参考サイト

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2025年12月
 123456
78910111213
14151617181920
21222324252627
28293031