Node.js
npm

npm-scriptsについて

More than 3 years have passed since last update.


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