npm脚本如何优先考虑本地依赖而不是全局依赖?

时间:2017-06-07 18:37:53

标签: javascript json node.js npm npm-scripts

我理解npm脚本会将./node_modules/.bin添加到您的PATH,因此您只需使用下面的npm test运行package.json,npm就会自动使用本地版本的mocha在./node_modules/.bin

中找到
"scripts": {
    "test": "mocha"
}

这是一个很好的功能,因为它可以节省我写package.json这样的文件:

"scripts": {
    "test": "./node_modules/.bin/mocha"
}

但是如果我带来一个全球安装了mocha的新开发者呢?或者我需要将其推送到具有预配置全局包的环境中?如果我在mocha中使用简写./node_modules/.bin/mocha,而不是package.json,优先级是什么,全局或本地包?

1 个答案:

答案 0 :(得分:4)

Node.js会尝试先运行your locally installed packages

  

如果需要模块,Node.js将通过浏览祖先目录(./node_modules/../node_modules/../../node_modules/等中的所有node_modules /目录来查找它。使用找到的第一个适当的模块。

有关Node.js如何解析所需模块的更详细说明,here is a nice breakdown