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所需模块的更详细的解释, 这里是一个很好的细分 。