新建qdleader-cli 文件夹 进入文件夹
npm init -y
在 demo 下创建 bin 文件夹,并在里面创建 node 入口文件 enter
编辑 enter 文件,并将其配置到 package.json 中的 bin 字段
#! /usr/bin/env node
console.log("hello demo");
// package.json
// bin 字段也支持对象模式配置
"bin": "bin/enter",
npm link 到全局
在 demo 文件目录下运行 npm link 将项目链接到本地环境,就可以临时实现 demo 指令全局调用。(--force 参数可以强制覆盖原有指令)
运行 qdleader-cli 命令,命令行成功打印出 hello demo。 demo 项目配置成功。
commander —— 命令行指令配置
npm install commander
enter 文件内容如下:
const { Command } = require('commander');
const program = new Command();
// const program = require("commander");
program.parse(process.argv);
// 解析用户执行时输入的参数 // process.argv 是 nodejs 提供的属性 // npm run server --port 3000 // 后面的 --port 3000 就是用户输入的参数
Step2: version 方法可以配置版本信息提示
Step3: name 和 usage 方法分别配置 cli 名称和 --help 第一行提示
program.name("icourt-cli").usage(`icourt-cli v`).version(`1.0.0`);
chalk —— 命令行美化工具
npm i chalk@4.0.0
const chalk = require("chalk");
console.log(
chalk.green(
"Hello!" +"\n"+"Welcome to use" +
chalk.blue.underline.bold("前端项目模版") +
" enjoy it!"
)
);
inquirer —— 命令行交互工具
npm install --save inquirer@^8.0.0
new Inquirer.prompt([
{
name: "vue",
// 多选交互功能
// 单选将这里修改为 list 即可
type: "checkbox",
message: "Check the features needed for your project:",
choices: [
{
name: "Babel",
checked: true,
},
{
name: "TypeScript",
},
{
name: "Progressive Web App (PWA) Support",
},
{
name: "Router",
},
],
},
]).then((data) => {
console.log(data);
});
ora —— 命令行 loading 效果
ora 使用非常简单,可以直接看下面的案例
利用 ora 来实现一个简单的命令行 loading 效果。
npm install ora@4.0.0
const ora = require("ora");
// 定义一个loading
const spinner = ora("Loading unicorns");
// 启动loading
spinner.start();
setTimeout(() => {
spinner.color = "yellow";
spinner.text = "Loading rainbows";
}, 1000);
// loading 成功
spinner.succeed();
// loading 失败
spinner.fail();
艺术字
npm install figlet
var figlet = require("figlet");
figlet("Hello World!!", function (err, data) { if (err) { console.log("Something went wrong..."); console.dir(err); return; } console.log(data); });
download-git-repo —— 命令行下载工具
npm i download-git-repo
download(repository, destination, options, callback) 下载一个 git repository 到 destination 文件夹,配置参数 options, 和 callback回调.
repository
一、可以采用下面简写方式
GitHub - github:owner/name 或者 owner/name GitLab - gitlab:owner/name Bitbucket - bitbucket:owner/name 1、默认是 master 分枝, 但你可以指定分枝和tag ,如 owner/name#my-branch.
2、你还可以指定自定义来源,如 gitlab:custom.com:owner/name. 自定义来源默认为 https 或 git@ , 你也可以自己之定义协议.
下载自己的gitlab 如果没有生效 可以使用 node 的模块
var child_process = require('child_process')
child_process.execSync(`git clone -b master https://mygitlab.cn/phoenix/phoenix-web.git name`);
只要你的git clone 好使这个就好使