如何在每个“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.jsonpostinstall脚本中。

这些是npm.shpackage.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-simplepostinstall脚本没有被执行。

有没有一种方法,使其个人npm install <package> ? 或者有没有更好的方法来完成这个?