关于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。我们可以看到控制台输出:
可以发现我们的bin目录下的脚本文件已经执行了。