前端拾遗

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 的目录

babel_d1.png
该目录存放的是软链接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

上一篇下一篇

猜你喜欢

热点阅读