自定义脚手架

一、创建目录

二、创建 package.json

在 YQcli 目录下运行 npm init -y,生成 package.json

三、将 yqcli 定义为全局命令

1. 编辑 bin/index.js

javascript 复制代码
#! /usr/bin/env node

console.log(1);

2. 全局定义 yqcli

bash 复制代码
npm link

3. 验证

成功后,检验运行命令 yqcli

四、安装依赖

**commander:**用于自定义指令

inquirer: 用于创建交互式命令行界面

**download-git-repo:**用于从远程仓库下载代码

**ora:**用于在命令行中创建加载动画

chalk: 用于在命令行中为文本添加颜色和样式

bash 复制代码
pnpm add commander
bash 复制代码
pnpm add inquirer
bash 复制代码
pnpm add download-git-repo
bash 复制代码
pnpm add ora@5
bash 复制代码
pnpm add chalk@4

五、编写 bin/index.js

脚手架主要逻辑代码

javascript 复制代码
#! /usr/bin/env node

const { program } = require("commander");

const inquirer = require("inquirer");

const download = require("download-git-repo");

const ora = require("ora");

const chalk = require("chalk");

program.option("-f, --framwork <framwork>", "设置项目");

program

  .command("create <project>")

  .alias("cre")

  .description("创建项目")

  .action((project) => {

    inquirer.default

      .prompt([

        {

          type: "list",

          name: "framwork",

          message: "选中模板",

          choices: ["express", "egg", "koa"],

        },

      ])

      .then((answer) => {

        const spinner = ora("downloading...").start();

        download(

          "direct:git@gitee.com:iceLvoeYcoder/vue3-vite-pinia-naive-js.git",

          project,

          {

            clone: true,

          },

          (err) => {

            if (err) {

              spinner.fail("download fail");

            } else {

              spinner.succeed("download success");

              console.log(chalk.blue("you can run"));

              console.log(chalk.blue(`cd ${project}`));

              console.log(chalk.blue("npm install"));

            }

          }

        );

      });

  });

program.parse(process.argv);

六、运行脚手架安装远端项目

bash 复制代码
yqcli create demo

七、总结

综上: 在本地就创建好了自己的脚手架,其中细节小伙伴们自行完善。

相关推荐
小陈工5 分钟前
2026年3月28日技术资讯洞察:5G-A边缘计算落地、低延迟AI推理革命与工业智造新范式
开发语言·人工智能·后端·python·5g·安全·边缘计算
第二只羽毛27 分钟前
C++ 高并发内存池1
大数据·开发语言·c++·开源
不想看见40434 分钟前
C++/Qt 实习岗位深度解析【结合一次研发实习谈感受】
开发语言·c++·qt
sjmaysee1 小时前
Java框架SpringBoot(一)
java·开发语言·spring boot
寒秋花开曾相惜1 小时前
(学习笔记)3.8 指针运算(3.8.3 嵌套的数组& 3.8.4 定长数组)
java·开发语言·笔记·学习·算法
想唱rap1 小时前
Linux线程
java·linux·运维·服务器·开发语言·mysql
kgduu1 小时前
js之客户端存储
javascript·数据库·oracle
Tony Bai1 小时前
Rust 看了流泪,AI 看了沉默:扒开 Go 泛型最让你抓狂的“残疾”类型推断
开发语言·人工智能·后端·golang·rust
四千岁1 小时前
2026 最新版:WSL + Ubuntu 全栈开发环境,一篇搞定!
javascript·node.js
njidf1 小时前
C++与Qt图形开发
开发语言·c++·算法