我正在维护以下目录结构:
/home/user/Desktop/
|-- app/
| |-- package.json
| `-- server.js
|-- node/
| |-- bin/
| | |-- node
| | `-- npm
| |-- include/
| |-- lib/
| `-- share/
|
`-- npm.sh
我希望所有本地安装的节点模块都驻留在目录中node
。也就是说,如果我npm install
在目录中运行app
,最初它将在当前目录 ( app
) 中安装模块,然后将node_modules
文件夹移动到名为node
. 为此,我编写了一个脚本并将npm.sh
(mv
移动)命令放在.postinstall
package.json
这些是文件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>
?或者有没有更好的方法来做到这一点?