思考一个问题:
全局安装vue-cli之后,为什么就能在任何目录使用vue create xxx来创建项目?
其实是用到了bin字段+符号链接。
一、先看bin字段
假如你发布了一个npm包,其中带有执行脚本,你希望用户安装你的npm包的时候,把可执行的脚本文件也安装下来,就会用到这个bin字段。
我们用jest举例,jest包自带一个执行脚本,对应的jest的package.json如下:
二、再看符号链接(软链接)
符号链接是一种特殊的文件,包含指定文件的路径引用,类似于桌面的快捷打开方式。
在项目中局部安装jest包后,npm会在项目中的node_modules/.bin目录下创建一条符号链接,点击这个文件,就会链接到bin字段中定义的jest.js文件:
如果是全局安装呢?
npm会在环境变量路径/usr/local/bin目录下(MAC)创建一个symbolic,指向bin字段中声明的文件,这样在当前用户任意目录下,都可以使用bin属性中定义的命令了。