dib*_*ndu 7 node.js npm node-modules npm-install npm-scripts
我正在维护以下目录结构:
/home/user/Desktop/
|-- app/
| |-- package.json
| `-- server.js
|-- node/
| |-- bin/
| | |-- node
| | `-- npm
| |-- include/
| |-- lib/
| `-- share/
|
`-- npm.sh
Run Code Online (Sandbox Code Playgroud)
我希望我所有本地安装的节点模块都驻留在目录中node
.也就是说,如果我npm install
在目录中运行app
,最初它会将模块安装在当前目录(app
)中,然后将node_modules
文件夹移动到名为的外部目录node
.为此,我编写了一个脚本npm.sh
并将mv
(move)命令放在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
Run Code Online (Sandbox Code Playgroud)
内容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"
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是:当我这样做时./npm.sh && cd app && npm install
,一切都按预期工作.但是当我这样做时npm install jwt-simple
,postinstall
脚本没有被执行.
有没有办法使它适合个人npm install <package>
?或者有更好的方法来实现这一目标吗?
安装包后,您可以使用npm hook 脚本执行某些操作。
创建node_modules/.hooks/postinstall
可执行文件,它也将在npm install <package>
.
注意:我注意到 npm 版本 5.1.0 到 6.0.1 之间的 npm hook 脚本存在问题。因此,如果您遇到钩子问题,请检查您的 npm 版本并在必要时升级。
归档时间: |
|
查看次数: |
1517 次 |
最近记录: |