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]
+ 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 工具背后真正的主流技术路线。