我们在下载 npm 包后,查看 npm 包的 package.json 有些包会有 bin 字段
例如我们常用的 webpack-cli 包
那么 bin 字段有什么用呢?
许多软件包都具有一个或多个要安装到 PATH 中的可执行文件。
bin 字段是命令名到本地文件名的映射。在安装时,npm 会将文件符号链接到 prefix/bin
以进行全局安装或./node_modules/.bin/
本地安装。
当我们使用 npm 或者 yarn 命令安装包时,如果该包的 package.json
文件有 bin 字段,就会在 node_modules
文件夹下面的 .bin
目录中复制了 bin 字段链接的执行文件。我们在调用执行文件时,可以不带路径,直接使用命令名来执行相对应的执行文件。
下面是调用的命令
scripts: {
start: './node_modules/bin/someTool.js build'
}
// 简写为
scripts: {
start: 'someTool build'
}
上面的命令在调用时需要使用:
yarn start
但是如果我们不想在前面使用 yarn,而是直接在命令行中调用命令则需要用 yarn link
或者 npm link
将包的 bin 文件链接到 node 全局
或者也可以直接将包安装到全局 yarn add 你的包名 -g
或者 npm install 你的包名 -g
这样就可以直接在命令行中使用 bin 字段里注册的命令,而不需要加任何其余字段。
例如 vue-cli 中:
通过 npm install vue-cli -g
将命令安装到全局,然后使用脚手架创建项目时:
vue create hello-world
即可直接在命令行中调用