https://ccfly.codes/?inviteCode=KVB090KC

上面前 2 个
star分别是旧仓库codercup和新仓库feige996的star数。
unibest 是最好的 uniapp 开发框架,由 uniapp + Vue3 + Ts + Vite5 + UnoCss + VSCode(可选 webstorm) + uni插件+ wot-ui(可选其他 UI 库)构建,集成了多种工具和技术,使用了最新的前端技术栈,无需依靠 HBuilderX,通过命令行方式即可运行 web、小程序 和 App。(注:App 还是需要 HBuilderX)
unibest 内置了 约定式路由、layout布局、请求封装、请求拦截、登录拦截、UnoCSS、i18n多语言 等基础功能,提供了 代码提示、自动格式化、统一配置、代码片段 等辅助功能,让你编写 uniapp 拥有 best 体验 ( unibest 的由来)。
unibest 默认支持所有的 uniapp 平台(H5、小程序 和 App),但是具体支持情况还要看您所选的 UI 库 是否支持。
如图所示,两个高高的都是 unibest,分别是新旧仓库。
黄色的是旧的 codercup,秘钥丢失,进不去了。粉色的新的仓库(unibest-tech),目前正在积极维护。

unibest 由最初始的官方 cli 脚手架模板生成,执行的命令如下:
npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-projectuniapp 官方链接:点击跳转 - quickstart-cli
在官方生成的项目基础上,增加了如下内容:
wot-ui,支持替换其他 UI库)🔥 最新语法 - <script lang="ts" setup> 语法
🎨 UnoCSS - 高性能且极具灵活性的即时原子化 CSS 引擎
😃 UnoCSS Icons & icones - 海量图标供你选择
🍍 pinia & pinia-plugin-persistedstate - 全端适配的全局数据管理
🗂 uni.request 请求封装 - 一键引入,快捷使用
📦 路由拦截 基础封装,支持扩展,快捷使用,拒绝黑盒
📥 API 自动加载 - 直接使用 Composition API 无需引入
🎉 v3 Code Snippets 加快你的页面生成
🦾 Pritter & ESLint & Stylelint & husky & lint-staged + commitlint - 保证代码质量
🌈 TypeScript 加持,同时又兼容 js ,同时满足不同人群
💡 ES6 import 自动排序,css 属性 自动排序,增强编码一致性
🖥 多环境 配置分开,想则怎么配置就怎么配置
通过 tree -I node_modules -I dist -I .git -I .husky -I .trae -I .cursor -I .github -I .hbuilderx -a > tree.md 命令生成。(update on 2025-12-31)
.
├── .commitlintrc.cjs
├── .editorconfig
├── .gitignore
├── .npmrc
├── .vscode
│ ├── extensions.json
│ ├── settings.json
│ └── vue3.code-snippets
├── env
│ ├── .env
│ ├── .env.development
│ ├── .env.production
│ └── .env.test
├── eslint.config.mjs
├── favicon.ico
├── index.html
├── LICENSE
├── manifest.config.ts
├── openapi-ts-request.config.ts
├── package.json
├── pages.config.ts
├── pnpm-lock.yaml
├── README.md
├── scripts
│ ├── create-base-files.js
│ ├── open-dev-tools.js
│ └── postupgrade.js
├── src
│ ├── .DS_Store
│ ├── api
│ │ ├── foo-alova.ts
│ │ ├── foo.ts
│ │ ├── login.ts
│ │ └── types
│ │ └── login.ts
│ ├── App.ku.vue
│ ├── App.vue
│ ├── components
│ │ └── .gitkeep
│ ├── env.d.ts
│ ├── hooks
│ │ ├── useRequest.ts
│ │ ├── useScroll.md
│ │ ├── useScroll.ts
│ │ └── useUpload.ts
│ ├── http
│ │ ├── alova.ts
│ │ ├── http.ts
│ │ ├── interceptor.ts
│ │ ├── README.md
│ │ ├── tools
│ │ │ ├── enum.ts
│ │ │ └── queryString.ts
│ │ ├── types.ts
│ │ └── vue-query.ts
│ ├── layouts
│ │ └── default.vue
│ ├── main.ts
│ ├── manifest.json
│ ├── pages
│ │ ├── .DS_Store
│ │ ├── index
│ │ │ └── index.vue
│ │ └── me
│ │ └── me.vue
│ ├── pages.json
│ ├── router
│ │ ├── interceptor.ts
│ │ └── README.md
│ ├── service
│ │ ├── index.ts
│ │ ├── info.ts
│ │ ├── listAll.ts
│ │ └── types.ts
│ ├── static
│ │ ├── app
│ │ │ └── icons
│ │ │ ├── 1024x1024.png
│ │ │ ├── 120x120.png
│ │ │ ├── 144x144.png
│ │ │ ├── 152x152.png
│ │ │ ├── 167x167.png
│ │ │ ├── 180x180.png
│ │ │ ├── 192x192.png
│ │ │ ├── 20x20.png
│ │ │ ├── 29x29.png
│ │ │ ├── 40x40.png
│ │ │ ├── 58x58.png
│ │ │ ├── 60x60.png
│ │ │ ├── 72x72.png
│ │ │ ├── 76x76.png
│ │ │ ├── 80x80.png
│ │ │ ├── 87x87.png
│ │ │ └── 96x96.png
│ │ ├── images
│ │ │ ├── avatar.jpg
│ │ │ └── default-avatar.png
│ │ ├── logo.svg
│ │ ├── my-icons
│ │ │ └── copyright.svg
│ │ └── tabbar
│ │ ├── example.png
│ │ ├── exampleHL.png
│ │ ├── home.png
│ │ ├── homeHL.png
│ │ ├── personal.png
│ │ ├── personalHL.png
│ │ └── scan.png
│ ├── store
│ │ ├── index.ts
│ │ ├── token.ts
│ │ └── user.ts
│ ├── style
│ │ ├── iconfont.css
│ │ └── index.scss
│ ├── tabbar
│ │ ├── config.ts
│ │ ├── index.vue
│ │ ├── README.md
│ │ ├── store.ts
│ │ └── types.ts
│ ├── types
│ │ ├── async-component.d.ts
│ │ ├── async-import.d.ts
│ │ ├── auto-import.d.ts
│ │ ├── components.d.ts
│ │ └── uni-pages.d.ts
│ ├── typings.d.ts
│ ├── typings.ts
│ ├── uni_modules
│ │ └── .gitkeep
│ ├── uni.scss
│ └── utils
│ ├── debounce.ts
│ ├── index.ts
│ ├── systemInfo.ts
│ ├── toLoginPage.ts
│ ├── updateManager.wx.ts
│ └── uploadFile.ts
├── tsconfig.json
├── uno.config.ts
├── vite-plugins
│ ├── copy-native-resources.ts
│ ├── README.md
│ └── sync-manifest-plugins.ts
└── vite.config.ts