关于package.json中bin的用法

3,954 阅读2分钟

关于node项目,package.json中bin的用法

在平时的前端开发中我们经常会用到一些全局的命令(比如我们在开发vue项目时,安装了vue的脚手架后我们就可以使用vue create xxx 的命令来创建项目)。这篇文章不会教你写一个自己的脚手架工具。但是可以先来了解一下最基本的怎么写一个自己的项目命令。

第一步

既然是关于node。肯定需要一个node的项目。新建一个文件夹。然后运行npm init。根据你自己的喜好填。最终我们会得到一个package.json文件:

{
  "name": "node-bin-test",
  "version": "1.0.1",
  "description": "test bin",
  "private": true,
  "main": "index.js",
  "dependencies": {
    "axios": "^0.21.1",
    "cors": "^2.8.5",
    "mysql": "^2.18.1"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "bin"
  ],
  "author": "",
  "license": "ISC"
}

第二步

然后创建一个bin文件夹并且新增一个test.js文件(这个可以随意,只要bin属性指向这个文件就行)。然后在package.json新增一个bin属性"bin": "./bin/test.js",。这样配置,我们的包就会以name属性的值当作命令,即node-bin-test

第三步

接下来我们开始编写test.js脚本文件

#!/usr/bin/env node
function echoBin() {
  console.log("输出bin");
}
echoBin();

#!/usr/bin/env node这行代码的意思是使用 node 进行脚本的解释程序。

bin 字段是命令名到本地文件名的映射。在安装时,npm 会将文件符号链接到 prefix/bin 以进行全局安装或./node_modules/.bin/本地安装。

当我们使用 npm 或者 yarn 命令安装包时,如果该包的 package.json 文件有 bin 字段,就会在 node_modules 文件夹下面的 .bin 目录中复制了 bin 字段链接的执行文件。我们在调用执行文件时,可以不带路径,直接使用命令名来执行相对应的执行文件。

现在我们使用npm link来进行本地的全局安装进行测试。在执行npm link 以后。我们在命令行执行node-bin-test。我们可以看到控制台输出:

6011fe38617e2aba24fb4ac44f07e31.png

可以发现我们的bin目录下的脚本文件已经执行了。