Loading repository data…
Loading repository data…
MoRijiu / repository
🚀 A modern admin template built with Vue 3, Vite, TypeScript, Ant Design Vue, and Pinia. 开箱即用的中后台前端解决方案,基于 Vue3 + Vite + TypeScript + Ant Design Vue + Pinia
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
vue3-antd-admin-template/
├── .husky/ # Git Hooks 配置
├── .vscode/ # VSCode 配置
├── mock/ # Mock 数据
├── public/ # 静态资源
├── scripts/ # 脚本文件
├── src/
│ ├── api/ # API 接口
│ ├── assets/ # 资源文件
│ ├── components/ # 公共组件
│ ├── composables/ # 组合式函数
│ ├── config/ # 配置文件
│ ├── directives/ # 自定义指令
│ ├── layouts/ # 布局组件
│ ├── locales/ # 国际化语言包
│ ├── router/ # 路由配置
│ ├── store/ # 状态管理
│ ├── styles/ # 全局样式
│ ├── types/ # TypeScript 类型定义
│ ├── utils/ # 工具函数
│ ├── views/ # 页面组件
│ ├── App.vue # 根组件
│ └── main.ts # 入口文件
├── .editorconfig # 编辑器配置
├── .env # 环境变量
├── .env.development # 开发环境变量
├── .env.production # 生产环境变量
├── .eslintrc-auto-import.json # ESLint 自动导入配置
├── .gitignore # Git 忽略文件
├── .lintstagedrc.cjs # lint-staged 配置
├── .prettierignore # Prettier 忽略文件
├── .prettierrc.cjs # Prettier 配置
├── commitlint.config.cjs # Commitlint 配置
├── eslint.config.js # ESLint 配置
├── index.html # HTML 模板
├── package.json # 项目配置
├── postcss.config.cjs # PostCSS 配置
├── tsconfig.json # TypeScript 配置
├── uno.config.ts # UnoCSS 配置
└── vite.config.ts # Vite 配置
为什么使用 pnpm?
- 更快的安装速度
- 更少的磁盘空间占用
- 更严格的依赖管理
- 内置 Monorepo 支持
# 使用 npm 安装
npm install -g pnpm
# 或使用 Homebrew (macOS)
brew install pnpm
# 或使用 Scoop (Windows)
scoop install pnpm
本项目已配置好 VSCode 开发环境,首次打开项目时会提示安装推荐的扩展。
核心扩展(必需):
增强扩展(推荐):
项目已配置以下 VSCode 功能:
# 克隆项目
git clone https://github.com/MoRijiu/vue3-antd-admin-template.git
# 进入项目目录
cd vue3-antd-admin-template
# 安装依赖(推荐使用 pnpm)
pnpm install
# 如果使用其他包管理器
# npm install
# yarn install
注意: 项目配置了
preinstall钩子,强制使用 pnpm 安装依赖。如果需要使用其他包管理器,请修改或删除package.json中的preinstall脚本。
# 启动开发服务器(development 环境)
pnpm dev
# 启动开发服务器(local 环境)
pnpm dev:local
# 启动开发服务器(test 环境)
pnpm dev:test
# 构建生产环境
pnpm build
# 构建开发环境
pnpm build:dev
# 构建测试环境
pnpm build:test
# 预览生产构建
pnpm preview
# 预览开发构建
pnpm preview:dev
# 预览测试构建
pnpm preview:test
| 命令 | 说明 |
|---|---|
pnpm dev | 启动开发服务器(development 环境) |
pnpm dev:local | 启动开发服务器(local 环境) |
pnpm dev:test | 启动开发服务器(test 环境) |
pnpm build | 构建生产环境(包含 TypeScript 类型检查) |
pnpm build:dev | 构建开发环境(包含 TypeScript 类型检查) |
pnpm build:test | 构建测试环境(包含 TypeScript 类型检查) |
pnpm preview | 预览生产构建 |
pnpm preview:dev | 预览开发构建 |
pnpm preview:test | 预览测试构建 |
pnpm type-check | TypeScript 类型检查(不构建) |
pnpm lint | ESLint 检查并自动修复 |
pnpm lint:check | ESLint 检查(不修复) |
pnpm format | Prettier 格式化代码 |
pnpm format:check | Prettier 检查代码格式 |
pnpm clean | 清理构建产物和缓存 |
pnpm commit | 使用 Commitizen 规范化提交(交互式) |
pnpm prepare | 安装 Git Hooks(Husky) |
项目集成了完整的代码规范工具链,确保代码质量和一致性。
使用 ESLint 9.x 扁平配置(Flat Config)进行代码检查。
配置文件: eslint.config.js
特性:
使用方法:
# 检查并自动修复
pnpm lint
# 仅检查不修复
pnpm lint:check
主要规则:
no-console: 警告(允许 console.warn 和 console.error)@typescript-eslint/no-explicit-any: 警告(建议使用具体类型)@typescript-eslint/no-unused-vars: 错误(允许下划线前缀的未使用变量)vue/multi-word-component-names: 关闭(允许单词组件名)使用 Prettier 进行代码格式化,保持代码风格一致。
配置文件: .prettierrc.cjs
格式化规则:
truefalse(不使用分号)2 空格100 字符es5always使用方法:
# 格式化所有文件
pnpm format
# 检查代码格式
pnpm format:check
VSCode 集成:
项目已配置保存时自动格式化,无需手动运行命令。
使用 Husky + lint-staged 在提交前自动检查和格式化代码,确保提交的代码符合规范。
配置文件:
.husky/pre-commit - 提交前钩子.husky/commit-msg - 提交信息校验钩子.lintstagedrc.cjs - lint-staged 配置工作流程:
pre-commit: 提交前自动运行
commit-msg: 提交信息格式校验
首次使用:
# 安装 Git Hooks
pnpm prepare
使用 Commitizen 规范化 Git 提交信息:
# 使用交互式命令提交
pnpm commit
提交信息格式:
<type>(<scope>): <subject>
<body>
<footer>
Type 类型:
feat: 新功能fix: 修复 Bugdocs: 文档更新style: 代码格式(不影响代码运行的变动)refactor: 代码重构(既不是新增功能,也不是修复 Bug)perf: 性能优化test: 测试相关build: 构建相关(影响构建系统或外部依赖)ci: 持续集成(修改 CI 配置文件和脚本)chore: 其他修改(不修改 src 或 test 文件)revert: 回退提交示例:
# 使用交互式提交
pnpm commit
# 或手动编写符合规范的提交信息
git commit -m "feat(user): 添加用户登录功能"
git commit -m "fix(router): 修复路由守卫权限判断错误"
git commit -m "docs(readme): 更新安装说明"
克隆项目并安装依赖
git clone https://github.com/MoRijiu/vue3-antd-admin-template.git
cd vue3-antd-admin-template
pnpm install
启动开发服务器
pnpm dev
开发新功能
src/views 中创建页面组件src/router 中配置路由src/api 中定义 API 接口src/store 中管理状态(如需要)代码检查和格式化
# VSCode 会在保存时自动格式化和修复
# 也可以手动运行
pnpm lint
pnpm format
类型检查
pnpm type-check
提交代码
# 使用交互式提交(推荐)
pnpm commit
# 或使用 git commit
git add .
git commit -m "feat: 添加新功能"
构建和预览
# 构建生产版本
pnpm build
# 预览构建结果
pnpm preview
Q: 为什么必须使用 pnpm?
A: 项目配置了 preinstall 钩子强制使用 pnpm,以确保依赖安装的一致性。如果需要使用其他包管理器,请删除 package.json 中的 preinstall 脚本。
Q: ESLint 报错怎么办?
A: 大多数 ESLint 错误可以通过 pnpm lint 自动修复。如果无法自动修复,请根据错误提示手动修改代码。
Q: 如何禁用某个 ESLint 规则?
A: 在 eslint.config.js 中修改规则配置,或在代码中使用注释禁用:
// eslint-disable-next-line no-console
console.log('debug')
Q: 如何添加新的环境变量?
A: 在对应的 .env.* 文件中添加,变量名必须以 VITE_ 开头:
# .env.development
VITE_NEW_VAR=value
Q: Mock 数据不生效?
A: 检查 .env.* 文件中的 VITE_USE_MOCK 是否为 true,并确保 Mock 文件在 mock/ 目录下。
基于 Vue Router 的路由权限控制:
// src/router/guards.ts
router.beforeEach((to, from, next) => {
// 权限验证逻辑
})
使用 Pinia 进行状态管理,支持持久化:
// src/store/modules/user.ts
export const useUserStore = defineStore(
'user',
() => {
const token = ref('')
const userInfo = ref(null)
return { token, userInfo }
},
{
persist: {
key: 'user-store',
storage: localStorage,
},
}
)
内置 Vue I18n 国际化方案:
// 使用国际化
import { useI18n } from 'vue-i18n'
const { t, locale } = useI18n()
// 切换语言
locale.value = 'en-US'
// 使用翻译
t('common.confirm')
使用 vite-plugin-mock 提供 Mock 数据:
// mock/user.ts
export default [
{
url: '/api/user/login',
method: 'post',
response: () => {
return {
code: 200,
data: { token: 'mock-token' },
}
},
},
]
使用 unplugin-auto-import 和 unplugin-vue-components 自动导入:
<script setup lang="ts">
// 无需手动导入,直接使用
const count = ref(0)
const router = useRouter()
const userStore = useUserStore()
</script>
<template>
<!-- 组件自动导入 -->
<a-button>按钮</a-button>
</template>
使用 UnoCSS 原子化 CSS 引擎:
<template>
<div class="flex items-center justify-center p-4 bg-blue-500 text-white">原子化 CSS</div>
</template>
支持 Sass 预处理器,全局变量自动导入:
// src/styles/variables.scss
$primary-color: #1890ff;
$spacing-md: 16px;
// 组件中直接使用
.container {
color: $primary-color;
padding: $spacing-md;
}
项目支持多环境配置:
.env - 所有环境通用配置.env.development - 开发环境配置.env.production - 生产环境配置.env.test - 测试环境配置.env.local - 本地环境配置(不提交到 Git)# .env.development
VITE_APP_TITLE=Admin Template
VITE_API_BASE_URL=http://localhost:3000
VITE_USE_MOCK=true
在代码中使用:
const apiBaseUrl = import.meta.env.VITE_API_BASE_URL
现代浏览器和 IE11+(需要 polyfills)
| Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefo