知识储备
简单介绍下本文使用到的几个第三方库
commander
常用的命令行解决方案,用于处理终端命令行中输入的命令及编写命令行指令
就是用来定义你的脚手架里有哪些命令 🗒 详细使用说明
inquirer
可交互的命令行界面工具 ✔️ 详细使用说明
ora
加载过程中的 loading 动画效果,避免枯燥的等待 🕗 详细使用说明
chalk
给终端字体添加颜色,区分不同状态立马拥有多彩的人生 🌈 详细使用说明
举个例子
创建项目
首先创建个新项目,输入你的 ~~个人 ~~项目信息
mkdir [your-project]
cd [your-project]
yarn init
把上面说的几个工具都给安排上(PS. ora
和 chalk
最新版不支持 CommonJS
了,所以指定了低版本)
yarn add ora@^5 chalk@^4 commander inquirer
定义命令
在根目录创建index.js
, 写一点小命令
const ora = require('ora')
const chalk = require('chalk')
const inquirer = require('inquirer')
const program = require('commander')
const spinner = ora()
// 设置版本号
program.version(require('./package').version, '-v', '版本号')
// 添加命令
program
.command('time')
.description('现在时间')
.action(() => {
console.log(chalk.cyan(new Date().toLocaleString()))
})
program
.command('ask')
.description('询问楼上322住的是不是马冬梅')
.action(() => {
inquirer.prompt([
{
type: 'list',
message:"🤔 问谁呢?",
name:"who",
default:"楼下大爷",
choices:[
"楼下大爷",
"路过的小朋友",
],
}
]).then(answer => {
spinner.succeed('楼上322住的是马冬梅家吗?')
spinner.start('😳 思考中...')
setTimeout(() => {
spinner.fail('马什么梅?')
}, 2000)
})
})
// 重写默认的帮助选型、名字、描述
program
.helpOption('-h, --help', '帮助')
.addHelpCommand('help [command]', '命令详情')
program.parse(process.argv)
运行看看
配置执行文件
作为一个命令行工具,你用 node index.js
运行,这和裸奔有什么区别?
so 咱们给它配置执行文件 bin
在项目目录下创建 bin
文件夹,把 index.js
扔进去
改一下 package.json
,添加 bin
说明
{
"name": "quan-cli",
"version": "1.0.0",
"description": "my cli",
"main": "index.js",
"repository": "https://github.com/wendygaoyuan/quan-cli.git",
"author": "Wendy Gao <wendygaoyuan@163.com>",
"license": "MIT",
"private": false,
"bin": {
"quan-cli": "./bin/index.js"
},
"dependencies": {
"chalk": "^4",
"commander": "^9.1.0",
"inquirer": "^8.2.2",
"ora": "^5"
}
}
最后不要忘了把 index.js
里的版本号获取目录从 ./
改成 ../
// 设置版本号
program.version(require('../package').version, '-v', '版本号')
nice ~ , 咱们在本地调试一下,在项目根目录运行
sudo npm link
完美
最后的最后,不要忘记发布到 npm 中,同步给小伙伴们一起使用 ~