最近在写一些自动化脚本,研究了一下package.json中bin的用法
之前了解到的npm link,是给bin属性赋值cli.js,然后将用文件夹名称当作命令就可以执行cli.js,但如果想用其他的命令而非当前文件夹名称就需要对bin属性重新配置。
在项目根目录下新建demo.js
#!/usr/bin/env node
function run () {
console.log('cli demo');
}
run();
#!/usr/bin/env node 这段话的意思是让使用 node 进行脚本的解释程序。
package.json
"bin": {
"demo": "demo.js"
},
这样我们只要运行npm link就可以使用demo这个命令了。
bin 字段是命令名到本地文件名的映射。在安装时,npm 会将文件符号链接到 prefix/bin 以进行全局安装或./node_modules/.bin/本地安装。
当我们使用 npm 或者 yarn 命令安装包时,如果该包的 package.json 文件有 bin 字段,就会在 node_modules 文件夹下面的 .bin 目录中复制了 bin 字段链接的执行文件。我们在调用执行文件时,可以不带路径,直接使用命令名来执行相对应的执行文件。
如果想要打成全局包才可以使用该命令,打成全局包的命令
npm install . -g
或者
npm link