当前位置: 首页 > article >正文

自定义脚手架

一、创建目录

二、创建 package.json

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

三、将 yqcli 定义为全局命令

1. 编辑 bin/index.js

#! /usr/bin/env node

console.log(1);

2. 全局定义 yqcli

npm link

3. 验证

成功后,检验运行命令 yqcli

四、安装依赖

commander: 用于自定义指令

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

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

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

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

pnpm add commander
pnpm add inquirer
pnpm add download-git-repo
pnpm add ora@5
pnpm add chalk@4

五、编写 bin/index.js

脚手架主要逻辑代码

#! /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);

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

yqcli create demo

 

 

七、总结

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


http://www.kler.cn/a/517695.html

相关文章:

  • (2)STM32 USB设备开发-USB虚拟串口
  • FreeBSD里制作ubuntu22 jammy兼容环境的脚本
  • Spring 定时任务:@Scheduled 注解四大参数解析
  • Golang 生态学习
  • AI导航工具我开源了利用node爬取了几百条数据
  • 安装VMware17
  • Rust使用tokio(一)
  • 蓝桥杯3520 翻转 | 贪心+分类讨论
  • 《Effective Java》学习笔记——第7部分并发
  • 一文讲清JVM中的内存泄漏问题
  • Go语言中的值类型和引用类型特点
  • STM32项目分享:智能宠物喂食系统(升级版)
  • 软件过程模型
  • python动态全局缓存配置
  • 【论文+源码】 SeqDiffuSeq带有序列到序列生成的编码器变压器的文本扩散模型
  • OpenCV相机标定与3D重建(65)对图像点进行去畸变处理函数undistortPoints()的使用
  • 洛谷P1469 找筷子
  • Scala语言的移动应用开发
  • 使用select函数创建多线程TCP服务端
  • Skia使用Dawn后端在Windows窗口中绘图
  • 反向代理模块1
  • 第五天 Labview数据记录(5.1 INI配置文件读写)
  • python+playwright自动化测试(九):expect断言和expect_xxx()元素及事件捕获
  • 隐马尔科夫模型HMM
  • HDLC,pap,chap网络
  • C语言初阶--折半查找算法