模仿 create-vite / create-vue 风格写一个现代脚手架

text 复制代码
你有没有发现,现在新建一个前端项目的方式跟三五年前已经完全不一样了?

现在(2025~2026主流做法):
npm create vite@latest
npx create-next-app@latest
npm create vue@latest
npm create astro@latest
npm create solid@latest
npm create svelte@latest
bun create react
pnpm create vite

这背后其实是一个非常重要的演进方向:

「npm create xxx」这个写法几乎成了 2024-2026 年新建前端/全栈项目的事实标准

而绝大多数人真正用到的、体验最好的那一批「create-xxx」,几乎都长得差不多,它们基本上都遵循了同一套「现代轻量脚手架模板」:

现代 create-xxx 脚手架的典型特征(2025-2026版)

特性 说明 常见实现工具/库
命令形式 npm create xxx@latest / pnpm create xxx / bun create xxx ---
几乎不用全局安装 直接用 npx / bunx / pnpm dlx 执行 npm 的 create- 协议
极简依赖 通常只有 4~8 个运行时依赖 cac / commander + prompts
彩色 + 现代终端感 必须有颜色、loading 动画、渐变 logo picocolors / kolorist / chalk
交互式问题 非常克制的问题数量(通常 2~5 个) prompts / enquirer
模板直接拷贝或 degit 不再用 ejs 复杂渲染,更多直接拷贝 + 少量文本替换 fs-extra / degit
可选依赖自动安装 创建完立刻问你要不要 install execa / child_process
支持 --template / --yes 跳过 喜欢 CI/CD 和喜欢极简的人最爱 cac / yargs / commander
模板文件夹结构清晰 template/react-ts、template/vue-ts、template/minimal 等 ---

目前(2026年初)最主流的几种「技术路线图」

graph TD A[想做现代脚手架] --> B{选几条路?} B --> C1[最推荐 极简现代风] B --> C2[企业级/复杂需求风] B --> C3[老派但稳定风] C1 --> D1[cac + prompts + picocolors
+ fs-extra + execa] C1 --> D2["bunx degit" 路线
几乎零依赖] C2 --> D3[oclif 全家桶] C2 --> D4[oclif + plugins 架构] C3 --> D5[commander + inquirer + chalk] C3 --> D6[yargs + enquirer]

2026 年最被推荐的「极简现代风」技术栈组合

(绝大多数新项目都在用或往这个方向迁移)

bash 复制代码
核心依赖(共5个):
├── cac               # 超级轻量的命令行参数解析(比 commander 轻很多)
├── prompts           # 目前体验最好的交互式问答库(异步友好)
├── picocolors        # 目前最快的终端颜色库(取代 chalk)
├── fs-extra          # 增强版 fs(copy、emptyDir、ensureDir 等超好用)
└── execa             # 现代版的 child_process.exec(更好用 Promise)

极受欢迎的加分项(按使用频率排序):
1. degit              # 从 github 仓库快速下载模板(git clone 替代品)
2. ora                # loading 动画小 spinner
3. gradient-string    # 做个好看的彩虹 logo(锦上添花)
4. minimatch          # 做文件过滤时偶尔会用到

极简现代脚手架典型代码结构(2026主流写法参考)

javascript 复制代码
my-create-tool/
├── bin/
│   └── index.mjs           ← #!/usr/bin/env node
├── src/
│   ├── index.mjs
│   ├── prompts.mjs         ← 所有问题逻辑放这里
│   ├── copyTemplate.mjs
│   ├── installDeps.mjs
│   └── templates/          ← 真正要拷贝的内容都在这里
│       ├── vue-ts/
│       ├── react-ts/
│       ├── minimal/
│       └── node-api/
└── package.json

最核心的几行代码大概长这样(简化版):

js 复制代码
import { cac } from 'cac'
import prompts from 'prompts'
import pc from 'picocolors'
import { copy } from 'fs-extra'
import { execaCommand } from 'execa'

const cli = cac('create-my-tool')

cli.command('[dir]', '项目目录名')
   .option('--template <name>', '指定模板')
   .action(async (dir, options) => {
      const targetDir = dir || (await askProjectName()).name
      const template = options.template || (await askTemplate()).template

      await copyTemplate(template, targetDir)
      console.log(pc.green('项目创建完成~'))

      if (await shouldInstall()) {
         console.log('正在安装依赖...')
         await execaCommand('pnpm install', { cwd: targetDir })
      }
   })

cli.help().parse()

总结:2026 年你应该往哪个方向写脚手架?

text 复制代码
如果你是:
个人/小团队/个人品牌/内部工具         →   强烈推荐「极简现代风」 cac + prompts + picocolors
中大型团队/需要很多子命令/复杂插件系统   →   考虑 oclif(学习成本高但未来可扩展)
老项目维护/团队成员前端经验比较传统     →   commander + inquirer + chalk 仍然安全可接受

当前性价比最高、最多人正在用、最容易做出「高级感」的组合是:

cac + prompts + picocolors + fs-extra + execa (+ degit)

这就是 2025-2026 年绝大多数「让人用起来很爽」的 create-xxx 工具背后真正的主流技术路线。
相关推荐
qq_297574673 小时前
【实战教程】SpringBoot 集成阿里云短信服务实现验证码发送
spring boot·后端·阿里云
fanruitian4 小时前
uniapp android开发 测试板本与发行版本
前端·javascript·uni-app
rayufo4 小时前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
RANCE_atttackkk4 小时前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
韩立学长5 小时前
【开题答辩实录分享】以《智能大学宿舍管理系统的设计与实现》为例进行选题答辩实录分享
数据库·spring boot·后端
2501_944525545 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
李白你好6 小时前
Burp Suite插件用于自动检测Web应用程序中的未授权访问漏洞
前端
刘一说7 小时前
Vue 组件不必要的重新渲染问题解析:为什么子组件总在“无故”刷新?
前端·javascript·vue.js
编码者卢布7 小时前
【Azure Storage Account】Azure Table Storage 跨区批量迁移方案
后端·python·flask
徐同保8 小时前
React useRef 完全指南:在异步回调中访问最新的 props/state引言
前端·javascript·react.js