PaulChess / MyBlog

1 stars 0 forks source link

符号链接和package.json中的bin属性 #14

Open PaulChess opened 3 years ago

PaulChess commented 3 years ago

全局安装vue-cli之后,为什么就能在任何目录使用vue create xxx来创建项目?

其实是用到了bin字段+符号链接。

一、先看bin字段

假如你发布了一个npm包,其中带有执行脚本,你希望用户安装你的npm包的时候,把可执行的脚本文件也安装下来,就会用到这个bin字段。

我们用jest举例,jest包自带一个执行脚本,对应的jest的package.json如下: image

二、再看符号链接(软链接)

符号链接是一种特殊的文件,包含指定文件的路径引用,类似于桌面的快捷打开方式。

在项目中局部安装jest包后,npm会在项目中的node_modules/.bin目录下创建一条符号链接,点击这个文件,就会链接到bin字段中定义的jest.js文件: image 如果是全局安装呢?

npm会在环境变量路径/usr/local/bin目录下(MAC)创建一个symbolic,指向bin字段中声明的文件,这样在当前用户任意目录下,都可以使用bin属性中定义的命令了。 image

PaulChess commented 3 years ago

原文链接: https://zhuanlan.zhihu.com/p/141512700 软一峰对package的详解: https://javascript.ruanyifeng.com/nodejs/packagejson.html#toc4