模仿 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 工具背后真正的主流技术路线。
相关推荐
aou2 小时前
让表格式录入像 Excel 一样顺滑
前端·ai编程
前端付豪2 小时前
必知 Express和 MVC
前端·node.js·全栈
重铸码农荣光2 小时前
CSS 也能“私有化”?揭秘模块化 CSS 的防坑指南(附 Vue & React 实战)
前端·css·vue.js
南囝coding2 小时前
CSS终于能做瀑布流了!三行代码搞定,告别JavaScript布局
前端·后端·面试
ccnocare2 小时前
git 创建远程分支
前端
全栈王校长2 小时前
Vue.js 3 项目构建神器:Webpack 全攻略
前端
1024小神2 小时前
cloudflare+hono使用worker实现api接口和r2文件存储和下载
前端
Calvad0s2 小时前
application.yml和bootstrap.yml这两个配置文件有什么区别?
后端
Anita_Sun2 小时前
Lodash 源码解读与原理分析 - Lodash 对象创建的完整流程
前端