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