【发布时间】:2017-11-05 20:16:04
【问题描述】:
我正在维护以下目录结构:
/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(移动)命令放在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> ?或者有没有更好的方法来实现这一点?
【问题讨论】:
标签: node.js npm npm-install node-modules npm-scripts