模仿 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 工具背后真正的主流技术路线。
相关推荐
killerbasd1 小时前
牧苏苏传 我不装了 4/7
前端·javascript·vue.js
吴声子夜歌2 小时前
ES6——二进制数组详解
前端·ecmascript·es6
我是大猴子2 小时前
Spring代理类为何依赖注入失效?
java·后端·spring
码事漫谈2 小时前
手把手带你部署本地模型,让你Token自由(小白专属)
前端·后端
ZC跨境爬虫2 小时前
【爬虫实战对比】Requests vs Scrapy 笔趣阁小说爬虫,从单线程到高效并发的全方位升级
前端·爬虫·scrapy·html
爱上好庆祝2 小时前
svg图片
前端·css·学习·html·css3
王夏奇2 小时前
python中的__all__ 具体用法
java·前端·python
大家的林语冰3 小时前
《前端周刊》尤大开源 Vite+ 全家桶,前端工业革命启动;尤大爆料 Void 云服务新产品,Vite 进军全栈开发;ECMA 源码映射规范......
前端·javascript·vue.js
码农BookSea3 小时前
ReAct:让大模型学会边想边做
后端·ai编程
码农BookSea3 小时前
10分钟掌握 JSON-RPC 协议,面试加分、设计不踩坑
后端