相关依赖

    实现一个脚手架,通常会用到以下依赖包

    • commander:命令行处理工具
    • minimist:一个用于处理颜色的库。
    • chalk:命令行输出美化工具
    • kolorist:用于解析命令行选项、标志和参数的库。
    • inquirer:命令行交互工具
    • prompts:一个用于构建用户交互式命令行的库
    • ora:终端loading美化工具
    • git-clone:下载项目模版工具
    • figlet:终端生成艺术字
    • fs-extra:用来操作本地目录
    1# 安装commander
    2npm install commander
    3
    4# 安装chalk
    5npm install chalk@4
    6
    7# 安装inquirer
    8npm install --save inquirer@^8.0.0
    9
    10# 安装ora
    11npm install ora@5
    12
    13# 安装figlet
    14npm install figlet
    15
    16# 安装
    17npm install fs-extra
    1const { program } = require("commander");
    2
    3// 设置命令行应用程序的名称以及如何被使用的概述
    4program.name("dormant-cli").usage("<command> [options]");
    5
    6// 配置options
    7program.option("-v, --version", "版本");
    8program.option("-h, --help", "帮助");
    9
    10// 配置command
    11program
    12  .command("clone <source> [destination]")
    13  .description("将存储库克隆到新创建的目录中")
    14  .action((source, destination) => {
    15    console.log("source", source);
    16    console.log("destination", destination);
    17  });
    18
    19// 解析命令行参数
    20program.parse(process.argv);
    21const options = program.opts();
    22console.log("options", options);
    1const chalk = require('chalk')
    2console.log(chalk.yellow('我是dormant-cli脚手架'))
    1const inquirer = require("inquirer");
    2
    3inquirer
    4  .prompt([
    5    /* Pass your questions in here */
    6    {
    7      type: "input",
    8      name: "name",
    9      message: "你叫什么名字?",
    10      default: "codebetter",
    11    },
    12  ])
    13  .then((answers) => {
    14    // Use user feedback for... whatever!!
    15    console.log(answers);
    16  })
    17  .catch((error) => {
    18    if (error.isTtyError) {
    19      // Prompt couldn't be rendered in the current environment
    20    } else {
    21      // Something else went wrong
    22    }
    23  });
    1#!/usr/bin/env node
    2const ora = require("ora");
    3const spinner = ora("安装中...").start();
    4
    5setTimeout(() => {
    6  spinner.color = "red";
    7  spinner.text = "网络较慢,请稍等...";
    8}, 1000);
    9
    10setTimeout(() => {
    11  spinner.succeed("安装成功!");
    12  spinner.fail("安装失败!");
    13}, 3000);
    1const figlet = require("figlet");
    2
    3figlet("dormant-cli", function (err, data) {
    4  if (err) {
    5    console.log("Something went wrong...");
    6    console.dir(err);
    7    return;
    8  }
    9  console.log(data);
    10});

    :::