Open PaulChess opened 3 years ago
全局安装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属性中定义的命令了。
原文链接: https://zhuanlan.zhihu.com/p/141512700 软一峰对package的详解: https://javascript.ruanyifeng.com/nodejs/packagejson.html#toc4
全局安装vue-cli之后,为什么就能在任何目录使用vue create xxx来创建项目?
其实是用到了bin字段+符号链接。
一、先看bin字段
假如你发布了一个npm包,其中带有执行脚本,你希望用户安装你的npm包的时候,把可执行的脚本文件也安装下来,就会用到这个bin字段。
我们用jest举例,jest包自带一个执行脚本,对应的jest的package.json如下:![image](https://user-images.githubusercontent.com/69644161/112590882-7bbc8100-8e3e-11eb-80ca-777d6bb3195c.png)
二、再看符号链接(软链接)
符号链接是一种特殊的文件,包含指定文件的路径引用,类似于桌面的快捷打开方式。
在项目中局部安装jest包后,npm会在项目中的node_modules/.bin目录下创建一条符号链接,点击这个文件,就会链接到bin字段中定义的jest.js文件:
如果是全局安装呢?
npm会在环境变量路径/usr/local/bin目录下(MAC)创建一个symbolic,指向bin字段中声明的文件,这样在当前用户任意目录下,都可以使用bin属性中定义的命令了。![image](https://user-images.githubusercontent.com/69644161/112590964-9c84d680-8e3e-11eb-9ea1-970d76c14b22.png)