npm scripts中命令行工具来源问题
2017-04-15 本文已影响2人
就叫初九吧
在package.json中有如下配置
"scripts": {
"test": "echo \"this is babel study \" && exit 1",
"build": "babel src -d lib"
}
这里以 build中的 babel为例说明一下babel来自那个版本。
npm会在node_modules目录下建一个名为 .bin 的目录
该目录存放的是软链接symlink
babel-d2.png
即
npm在将包安装到项目时,如果包是一个命令行工具,那么npm会在该目录为
工具创建一个链接到安装目录的软链接symlink
npm在执行scripts的时候会将node_modules/.bin/ 临时添加到 PATH environment variable中去。
所以,此处运行
npm run build
时babel使用的是安装到项目中的babel版本。
这样做的好处是
保证了在不同项目中使用同一个工具时,可以使用工具的不同版本
参考
https://firstdoit.com/no-need-for-globals-using-npm-dependencies-in-npm-scripts-3dfb478908
更多内容可以参考http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html