我正在维护以下目录结构:
/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
and 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
, the postinstall
脚本没有被执行。
有没有办法让它适合个人npm install <package>
?或者有没有更好的方法来实现这一点?