npm脚本如何优先考虑全局依赖关系?
我知道npm脚本将./node_modules/.bin
添加到PATH
,因此您可以简单地使用下面的package.json
运行npm test
,npm将自动使用./node_modules/.bin
的mocha本地版本
"scripts": { "test": "mocha" }
这是一个很好的function,因为这样可以节省我写这样的package.json
文件:
"scripts": { "test": "./node_modules/.bin/mocha" }
但是,如果我带上一位在全球安装摩卡咖啡的新开发者,该怎么办呢? 或者我需要推动这个预先configuration的全球包的环境? 如果我在我的package.json
使用短手mocha
,而不是./node_modules/.bin/mocha
,那么全局或本地软件包优先?
Node.js会尝试先运行本地安装的软件包 。
如果你需要一个模块,Node.js通过遍历祖先目录中的所有node_modules /目录(
./node_modules/
等)来../../node_modules/
。 使用find的第一个适当的模块。
有关Node.js如何parsing所需模块的更详细的解释, 这里是一个很好的细分 。