“啪啪啪”三下键盘,极速拉起你的 uni-app 项目!
说实话,我也不想造轮子。但试了一圈之后,我发现了一个让我忍不了的问题:选了不要某个功能,生成的代码里居然还有它的 import 和空壳文件。 与其花半小时手动删代码,不如用
hy-uni—— 三下键盘,1 秒钟搞定!
🚫 那些年,我们新建项目后手动删过的代码
如果你经常用社区的高分脚手架创建项目,一定会遇到这个进退两难的死胡同:
-
官方模板太"毛坯":API 拦截器、状态管理全要自己从 0 开始配。新手直接劝退。
-
社区模板太"精装":不仅送你一堆组件,还送你几个业务全景页。新建项目第一件事,就是花半小时去删那些不需要的页面和 npm 包。最痛苦的是,删的时候还得提心吊胆,生怕漏删了某个
import导致整个项目一跑就白屏报错。
第 21 次从头搭项目时,我终于受不了了。于是,我过年时花了点时间写了 hy-uni。
🎯 先说结论:三下键盘,极速拉起项目
一条命令,三下键盘,1 秒钟,带给你一个干干净净的、随时可进入业务开发的工业级 uni-app 项目:
# ⚡ 极速拉起纯净骨架(1 秒钟)
npx hy-uni my-app --pure
# 或者 📋 交互式精装配置(30 秒内完成)
npx hy-uni my-app
核心理念:你不要的功能,连一行代码、一段注释、一个 npm 依赖,都不该出现在最终的产物中。
⚡ 速度对比(为什么说"极速"?)
| 方案 | 时间 | 特点 |
|---|---|---|
| hy-uni --pure | ⚡ 1 秒 | 三下键盘极速拉起纯净骨架 |
| hy-uni (交互) | 📋 30 秒 | 选择功能后自动生成完整项目 |
| 官方脚手架 | 5 分钟+ | 毛坯房,需要自己配置工程化 |
| 社区全量模板 | 10 分钟+ | 功能全但冗余,需要手动删代码 |
关键对比:hy-uni 不仅快,而且不用删代码 —— 你不选的功能从代码到依赖全部消失。
💻 极客最爱的"双轨"构建体验
很多老手开发者拥有"代码洁癖",喜欢毫无业务代码的"极净空壳";也有很多开发者希望项目能"满级出生",自带网络请求和主题切换方案。
在这款 CLI 中,我们将选择权完全交还给你。
路线 A:极速构建"极致纯净"空壳(老手狂喜)
对于只想要**"帮我把工程化基建搭好,其他的我自己来"**的极客,你只需在命令后敲入一个 --pure 参数:
npx hy-uni my-app --pure
啪啪啪三下键盘,敲下回车,1秒钟静默生成。 没有任何繁琐的交互问答选项,你将直接获得一个强迫症狂喜的极净项目:
-
只有基础工程化体系:Vue 3 + TypeScript + Vite + UnoCSS + Pinia 开箱即用。
-
没有任何网络请求、主题切换、业务示例等多余代码。
-
目录结构极其纯粹,没有多余的文件夹。
路线 B:交互式精装配置(开箱即用)
如果不加 --pure,CLI 则会提供完全可定制的丝滑交互面板:
┌ 🚀 火叶 - 快速创建高性能 uni-app 项目
│
● 模板来源: 缓存 (~/.huoye/templates/) [2天前更新]
│
◇ 请输入项目名称:
│ my-app
│
◇ 请选择创建路径:
│ ./demo
│
◇ 是否需要网络请求层?
│ ○ Yes / ● No
│
◆ 是否需要业务示例页面?
│ ○ Yes / ● No
│
◆ 是否需要主题管理?
│ ○ Yes / ● No
│
◆ 确认创建项目?
│ ● Yes / ○ No
│
◇ 🎉 恭喜!您的项目已准备就绪。
│
◇ Getting Started ─────────╮
│ │
│ $ cd demo/my-app │
│ $ pnpm install │
│ $ pnpm dev:h5 │
│ │
├───────────────────────────╯
此时,选择全选 Yes 的你,将获得一个"满级配置"项目:
-
封装极佳的 Http 客户端、请求拦截器体系及全局错误分类处理机制。
-
完善的亮暗色主题无缝切换落地方案及 CSS 变量体系。
最硬核的是:无论你是走纯净路线还是全选路线,生成的项目 App.vue、main.ts 以及 package.json 中的所有代码,都会像你自己手写的一般融洽,没有任何一点"被暴力注销掉"的痕迹。
💡 温馨提示:三个功能之间有依赖关系。"业务示例页面"依赖"网络请求层"——因为示例必须有 API 封装才能跑起来。所以如果你不选"网络请求层",CLI 就不会问你要不要"业务示例"。这样设计是为了保证生成的项目永远可以直接运行,没有任何破碎的依赖关系。
💡 三种使用场景速查
| 我想要 | 命令 | 适合谁 |
|---|---|---|
| 极速纯净空壳 | npx hy-uni my-app --pure |
有代码洁癖的老手,想自己搭业务 |
| 交互式精装配置 | npx hy-uni my-app |
想要完整方案,但不想要冗余代码 |
| 本地开发版本 | npx hy-uni my-app --local |
项目贡献者,想用最新开发模板 |
📂 看看生成出来的项目差异
路线 A 生成结果(--pure)
my-app/
├── src/
│ ├── pages/
│ │ ├── index/index.vue
│ │ └── about/about.vue
│ ├── layouts/default.vue
│ ├── store/index.ts
│ ├── utils/
│ │ ├── platform.ts
│ │ ├── system.ts
│ │ ├── data.ts
│ │ └── time.ts
│ ├── style/
│ └── static/
├── vite.config.ts
├── tsconfig.json
└── package.json ← 只有基础依赖
路线 B 生成结果(全选)
my-app/
├── src/
│ ├── pages/
│ │ ├── index/index.vue
│ │ ├── about/about.vue
│ │ ├── theme/ ← 新增
│ │ └── examples/ ← 新增
│ │ ├── api-demo.vue
│ │ ├── form-demo.vue
│ │ └── list-demo.vue
│ ├── api/ ← 新增
│ │ ├── client.ts
│ │ ├── interceptors.ts
│ │ ├── errors.ts
│ │ └── modules/
│ ├── composables/
│ │ └── useTheme.ts ← 新增
│ ├── config/
│ │ └── theme.ts ← 新增
│ ├── components/
│ │ └── ThemeToggle.vue ← 新增
│ ├── store/
│ │ ├── theme.ts ← 新增
│ │ ├── index.ts
│ │ └── modules/
│ │ ├── app.ts
│ │ └── counter.ts ← 新增
│ ├── layouts/default.vue
│ ├── utils/
│ ├── style/
│ └── static/
├── vite.config.ts
├── tsconfig.json
└── package.json ← 完整的依赖列表
对比一目了然 —— 不选就是真的没有,不是"注释掉"。
🛠️ 不只是干净:开箱即用的重型工程底座
不管你怎么选裁剪,hy-uni 都为你提供了工业级的开发体验,包含了 7 个 Vite 核心插件的自动装配:
| 插件 | 作用 |
|---|---|
vite-plugin-uni-pages |
页面自动路由生成 |
vite-plugin-uni-layouts |
布局系统搭建 |
vite-plugin-uni-manifest |
manifest 编程化配置 |
vite-plugin-uni-components |
组件按需自动导入 |
unplugin-auto-import |
Vue / uni-app API 自动导入 |
UnoCSS |
原子化极速 CSS 构建 |
mp-selector-transform |
小程序选择器兼容隔离转换 |
这意味着,创建完项目后:
-
你不需要手动导入
ref、onMounted。 -
你不需要手动去繁琐的
pages.json注册页面和组件。 -
路径别名
@/→src/已全部打通。 -
开发体验直接拉满。
✨ 你到底能得到什么?
基础工程化(所有项目都有)
-
Vue 3 + TypeScript —— 类型安全,开发爽
-
Vite 5 —— 毫秒级热更新,极速开发
-
7 个 Vite 插件 —— 页面自动路由、组件自动导入、manifest 编程化配置等,全配好
-
UnoCSS —— 按需生成原子化 CSS,再也不用手写 class
-
Pinia 状态管理 —— 开箱即用的持久化存储(适配小程序)
-
ESLint + TypeScript 类型检查 —— 代码规范自动化
可选功能 1:网络请求层
选了它,项目会多出完整的 src/api/ 目录:
import { get, post } from "@/api"
// GET 请求,自动拼接 params
const users = await get("/users", { page: 1, limit: 10 })
// POST 请求
const result = await post("/users", { name: "张三", age: 25 })
你获得了什么:
-
HTTP 客户端(基于 uni.request,支持 GET/POST/PUT/DELETE/PATCH)
-
请求/响应/错误拦截器(自动注入 Token、处理超时等)
-
7 种自定义错误分类(网络、超时、鉴权、权限等)
-
跨平台兼容(H5 / 小程序 / App 无缝切换)
-
完整的 API 模块化示例
不选它? src/api/ 目录根本不存在,package.json 里也没任何相关依赖。干干净净。
可选功能 2:主题管理
选了它,你就能这样用:
<script setup>
import { useTheme } from "@/composables/useTheme"
const { isDark, themeStore } = useTheme()
</script>
<template>
<button @click="themeStore.toggleTheme()">
{{ isDark ? "切换到亮色" : "切换到暗色" }}
</button>
</template>
你获得了什么:
-
亮色/暗色/跟随系统 三种主题模式
-
8 种预设主色调,可自定义
-
20+ CSS 变量自动注入
-
多端适配(H5 用 CSS 变量、小程序用全局事件、App 用状态栏同步)
-
主题切换组件 + 完整的设置页面
不选它? 上面所有文件全部消失。布局组件里的主题代码也会被移除,替换成一个固定的 background-color: #f8f8f8 —— 不是留空,而是提供正确的 fallback。
可选功能 3:业务示例页面
选了它(需要先选网络请求层),你会得到 3 个完整的业务演示:
-
API 调用演示 —— 列表获取、详情查看、数据创建的完整流程
-
表单演示 —— 输入、选择、复选、日期选择器,带表单验证
-
列表演示 —— 上拉加载、下拉刷新、搜索过滤的完整实现
这不是 "Hello World",每个页面都是可以直接拿来改改就用的业务代码。
不选它? 这些示例页面全部消失,首页上的导航入口也会一起消失(不会留下死链接)。
⚙️ 底层揭秘:如何做到代码级无痕裁剪?
一般的脚手架提供的是"多套模板分支组合"。而 hy-uni 创新性地引入了 "特征标记系统 (Feature Markers)",实现了一份源码,2^N 种自由组合引擎。
我们在架构底层源码中,巧妙地隐藏了特定的注释标记:
1. 单行精确抹除
如果在 CLI 里没选 examples 示例功能,下面带有 // 【examples】 标记的代码行,会从物理层面直接消失:
export * from "./modules/app"
export { useCounterStore } from "./modules/counter" // 【examples】
2. 块级区域剥离(支持多语言环境)
如果没选 theme 主题功能,被包裹的代码块整块剥离(支持 TS、SCSS、Vue 甚至 HTML 注释):
<!-- 【theme:start】 -->
<view class="nav-link" @click="goToPage('/pages/theme')">
<text>主题设置</text>
</view>
<!-- 【theme:end】 -->
3. 独门绝技:反向兜底(Fallback)裁剪
这是市面上其他脚手架极难做到的技术细节。针对"如果不选某个高阶模块,我仍然需要保留一套写死的基础兜底代码"的场景,我们设计了 ! 反向保留标记:
.layout {
// 【!theme:start】 (如果没选动态主题,就保留这段写死的极简灰色背景)
background-color: #f8f8f8;
// 【!theme:end】
// 【theme:start】 (如果选了主题,才保留动态的 CSS 变量注入机制)
background-color: var(--bg-color-primary);
transition: background-color 0.3s;
// 【theme:end】
}
正是这套底层切割引擎,加上我们对 npm 依赖 dependencies 的按树剥离,以及支持功能间的链式感知(不支持底层功能时不展示进阶询问逻辑),才铸就了极致纯净的代码产物质量。
🔧 进阶:把它变成你们团队的专属黑科技
"这套裁剪逻辑不错,但我司有祖传架构,我单纯想白嫖这套神级裁剪引擎怎么办?"
完全没问题。整个脚手架能力是靠底层模板根目录的 .templaterc.json 驱动的:
{
"features": {
"auth": {
"name": "权限管理",
"files": ["src/store/user.ts"],
"dependencies": ["jwt-decode"]
}
}
}
结合在你的祖传代码里打上好 // 【auth】 标记,你就可以把 hy-uni 当作你们内部团队私有化的高阶脚手架来直接复用!
(剧透:在这个大版本之后,我们将正式支持 hy-uni template add 命令,允许你直接接管并挂载任意外部 Git 仓库,搭建你的私有定制生态!)
🚀 立即体验(极速拉起只需 3 个命令)
别再对着一堆乱糟糟的精装房一筹莫展了:
# 极速纯净版
npx hy-uni my-app --pure
创建后的常用命令
cd my-app
pnpm install
# 开发命令
pnpm dev:h5 # H5 本地开发(localhost:3000)
pnpm dev:mp # 微信小程序开发
pnpm dev:app # App 开发
# 构建命令
pnpm build:h5 # H5 生产构建
pnpm build:mp # 小程序构建
# 检查命令
pnpm lint # ESLint 检查 + 自动修复
pnpm type-check # TypeScript 类型检查
📊 跟现有方案对比
| 官方模板 | 社区全量模板 | hy-uni | |
|---|---|---|---|
| 创建后能直接开发 | ❌ 需要自己搭 | ✅ 能,但要先删一堆 | ✅ 开箱即用 |
| 功能选择 | ❌ 无 | ❌ 无 / 模板分支 | ✅ 交互式按需选择 |
| 不要的功能 | N/A | ⚠️ 自己删(怕误删) | ✅ 从代码到依赖全清理 |
| 生成代码质量 | 空壳 | ⚠️ 可能有残留 | ✅ 零残留,像手写的 |
| 模板维护成本 | 低 | ⚠️ 高(N 个分支) | ✅ 低(1 份模板) |
| 极速纯净模式 | ❌ | ❌ | ✅ --pure 1秒钟 |
🔗 获取地址(直达阵地)
-
npm: hy-uni
-
源码(求 Star 指导): Gitee - hzy-uni-cli
核心源码不到 500 行,没有任何冗余包装。如果你也是代码洁癖患者,恰好懂我对极致整洁的坚持,欢迎来给我点一个宝贵的 Star!使用中发现任何 Bug,随时 Issue 见!
📌 总结
用 hy-uni:
-
我只想要骨架 →
--pure1秒钟搞定,零冗余 -
我想要完整方案 → 交互式选择,按需组合
-
我想要纯净但有示例 → 选 API + 示例,不选主题
-
我想用自己的模板 → 即将支持,用我们的引擎
核心理念:你不要的功能,连一行代码都不该出现。
🚀 现在就试试
npx hy-uni my-app
让我们一起告别"删文件夹"的时代。 ✨