如何在每个“npm install <package>”运行后运行安装后脚本
我正在维护以下目录结构:
/home/user/Desktop/ |-- app/ | |-- package.json | `-- server.js |-- node/ | |-- bin/ | | |-- node | | `-- npm | |-- include/ | |-- lib/ | `-- share/ | `-- npm.sh
我希望我的所有本地安装的节点模块驻留在目录node
。 也就是说,如果我在目录app
运行npm install
,最初它会将模块安装在当前目录( app
)中,然后将node_modules
文件夹移动到名为node
的外部目录。 为此,我写了一个脚本npm.sh
,并将mv
(move)命令放在package.json
的postinstall
脚本中。
这些是npm.sh
和package.json
文件。
内容npm.sh
:
#/bin/bash export PATH=/home/user/Desktop/node/bin:$PATH export NODE_PATH=/home/user/Desktop/node/node_modules export NODE_MODULE_ROOT=/home/user/Desktop/node /bin/bash
app/package.json
内容:
{ "name": "app", "version": "1.0.0", "scripts": { "postinstall": "mv node_modules $NODE_MODULE_ROOT", "start": "node server.js" }, "dependencies": { "jwt-simple": "^0.5.1" } }
但问题是:当我做./npm.sh && cd app && npm install
,一切按预期工作。 但是当我做npm install jwt-simple
, postinstall
脚本没有被执行。
有没有一种方法,使其个人npm install <package>
? 或者有没有更好的方法来完成这个?