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