npm-scriptsについて
npmは"scripts"というフィールドにshell scriptとエイリアスコマンドを指定できる。
{
"name": "myapp"
"scripts": {
"start": "node app.js",
"production": "NODE_ENV=production node app.js"
}
}
キーはnpm start
のようにエイリアスとして利用できる名前となり、値にはshell scriptをワンラインで指定する。
キーは自由に指定できるが、中には既に予約されている名前があり、それらを含めて以下の4種類に分類できる。
意味付けだけがされたnpm-scripts
-
start
- appを起動するようなshell scriptのエイリアスとして用いる。
-
restart
- appを再起動させるためのshell scriptのエイリアスとして用いる。
-
stop
- appを停止させるためのshell scriptのエイリアスとして用いる。
-
test
- appをテストするようなshell scriptのエイリアスとして用いる。
他のnpmコマンドをフックする形で実行されるnpm-scripts
-
publish
-
npm publish
の後に実行される。
-
-
install
-
npm install
の後に実行される。
-
-
uninstall
-
npm uninstall
の前に実行される。
-
-
update
-
npm update
の後に実行される。
-
これ以外のnpmコマンドをフックするnpm-scriptsも設定可能で、node_modules/.hooks/
以下になんやかんやするらしい。
予約された名前ではないnpm-scripts
上記以外のすべてのnpm-scripts(例 : 'production')は、npm production
のようには実行できない。
予約された名前ではないnpm-scriptsは、npm run-script
を用いて、下記のように実行する。
npm run-sctipt production
alias:
npm run production
npm-scriptsの前後に実行されるnpm-scripts
下記に挙げるものを除くすべてのnpm-scriptsには、プレフィックスをつけることで、そのnpm-scriptsの前後に実行されるものがある。
-
pre
- そのnpm-scriptsの前に実行される。
- 例 :
prestart
は、start
の前に実行される。
-
post
- そのnpm-scriptsの後に実行される。
- 例 :
prestart
は、start
の後に実行される。
中でも、下記のものは実行タイミングが個別に指定されている。
-
prepublish
-
npm publish
の前に実行される。
-
-
preinstall
-
npm install
の前に実行される。
-
-
postuninstall
-
npm uninstall
の後に実行される。
-
-
preupdate
-
npm update
の前に実行される。
-
npm-configについて
同様に、"config"というフィールドにappの設定を記述しておくことができる。
{
"name": "myapp"
"scripts": {
"start": "node app.js"
},
"config": {
"port": "8080"
}
}
ここで記述されたappの設定は、npm-scriptsで実行する時、環境変数にnpm_package_config_
というプレフィックスがついて設定される。
http.createServer(function() {
;
}).listen(process.env.npm_package_config_port);
このnpm-configの記述は、npmコマンドを用いて行うこともできる。
npm config set myapp:port 80