在用了Vue的脚手架工具以后,发现设计的非常好,简洁直观。因此,起念想要学习一下怎么使用Node来创建一个命令行工具

Vue的脚手架工具

Image

梳理

  1. package.json:记录了Node项目的基本信息依赖自定义脚本命令

  2. CMD的命令查找:先从当前目录中查找,(如果没有)再从系统的环境变量PATH中查找

逻辑

​ 从Vue脚手架这个优秀的例子出发,在安装完Vue的脚手架工具以后,我们就可以在任何目录下,使用npm create vue <project-name>命令,就可以在当前目录下构建一个Vue项目。

​ 首先,要实现这样的效果就要在package.json中添加bin配置项,添加后在使用npm install -g <package-name>安装后,npm会在系统环境变量PATH中添加我们在bin配置项中设置的命令名称,并且将这个命令指向配置的js文件,这样就可以在任意目录下面使用这个命令了

{
    "bin":{
        "cli":'cli/index.js'
    }
}

​ 其次,要实现简洁直观的外观,可以使用第三方库来方便的达到效果

​ 最后,要注意开发环境生产环境使用命令行工具的权限问题

开发环境:设置执行权限:chmod +x bin/cli.js

生产环境:npm会自行配置文件权限,确保可用

流程

  1. 配置package.json

    {
        "bin":{
            "cli":'cli/index.js'
        }
    }
  2. 编写index.js文件

    #! /usr/bin/env node
    
    //逻辑部分
  3. 链接npm link,执行后就执行路径:2 --- 3 --- PATH

总结

使用场景

跨平台

  1. 项目构建工具
  2. 自动化
  3. 数据处理

三方库(美化)

字体样式

简介 导入方式 地址
chalk 粗体、下划线、背景色 import chalk from "chalk" npm
colorette chalk 的简化版,粗体、下划线、背景色 import { blue, bold, underline } from "colorette" npm

参数解析

简介 导入方式 地址
commander 用来处理命令、参数、选项,自动生成帮助信息 import { Command } from "commander" npm

动态效果

简介 导入方式 地址
cli-progress 进度条 import { SingleBar, Presets } from "cli-progress" npm
ora 加载动画 import ora from "ora" npm

表格

简介 导入方式 地址
cli-table3 表格显示数据,让结构更清晰 import Table from "cli-table3" npm

艺术字

简介 导入方式 地址
figlet 打印醒目的标题 import figlet from "figlet" npm

交互式输入

简介 导入方式 地址
inquirer 选择菜单、确认、输入框 import inquirer from "inquirer" npm