# vue-admin **Repository Path**: power9508/vue-admin ## Basic Information - **Project Name**: vue-admin - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-12 - **Last Updated**: 2026-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # vue-admin ```sh pnpm create vite pnpm i -D unplugin-auto-import pnpm i -D unplugin-vue-components pnpm install pnpm dev pnpm lint pnpm build ``` --- ## Git 提交质量门禁(Husky + lint-staged + commitlint + oxfmt) 本项目通过一套 Git 钩子(Git Hooks),在每次提交前自动完成「代码格式化」与「提交信息规范校验」, 从而统一团队代码风格、保证提交历史清晰可读。 ### 1. 整体链路 ```text git commit │ ├─ .husky/pre-commit → npx --no-install lint-staged │ └─ 读取 .lintstagedrc.mjs │ └─ 对暂存区文件执行:oxfmt → oxlint --fix → eslint --fix │ └─ .husky/commit-msg → npx --no-install commitlint --edit "$1" └─ 读取 commitlint.config.js └─ 校验提交信息是否符合「约定式提交」规范 ``` 两个钩子任意一个校验失败,本次 `git commit` 都会被中断,修改仍保留在工作区, 修正后可重新提交。 ### 2. 钩子是如何被安装到 Git 的 `package.json` 中的 `prepare` 脚本负责在依赖安装时自动启用 husky: ```jsonc { "scripts": { "prepare": "husky", // pnpm install 时自动把 .husky/ 下的钩子挂到 .git/hooks/ }, } ``` - 首次克隆项目后,执行 `pnpm install` 即可自动完成钩子安装,无需手动操作。 - husky 内部调度脚本位于 `.husky/_/h`,由 husky 自动生成,**请勿手动修改**。 ### 3. 各配置文件说明 | 文件 | 作用 | | ---------------------------------------- | ---------------------------------------------------------- | | `.husky/pre-commit` | 提交前钩子:触发 lint-staged 对暂存文件做格式化/lint | | `.husky/commit-msg` | 提交信息钩子:触发 commitlint 校验提交信息格式 | | `.lintstagedrc.mjs` | 定义对哪些文件执行哪些格式化/lint 命令(先 oxfmt 后 lint) | | `commitlint.config.js` | 定义提交信息校验规则(继承约定式提交规范) | | `package.json` 的 `format` / `lint` 脚本 | 手动格式化 / 全量 lint 的快捷命令 | #### 3.1 提交前格式化(oxfmt) `.lintstagedrc.mjs` 中定义了提交前对暂存文件的处理顺序,**核心是先格式化、后 lint**: - `*.{js,ts,jsx,tsx,vue}`:`oxfmt` → `oxlint --fix` → `eslint --fix --cache` - `*.{json,md,css,html,scss,less}`:仅 `oxfmt` `oxfmt` 是 oxc 工具链里的格式化器(Rust 实现,速度远快于 Prettier), 等价于 `prettier --write`。你也可以用 `pnpm format` 手动格式化整个 `src/` 目录。 #### 3.2 提交信息规范(commitlint) `commitlint.config.js` 继承 `@commitlint/config-conventional`,要求提交信息遵循: ```text (): ``` - `type` 必须是约定值:`feat` / `fix` / `docs` / `style` / `refactor` / `test` / `chore` 等。 - 示例:`feat(login): 支持手机号登录`、`fix: 修复分页越界`。 ### 4. 常用命令 ```sh pnpm install # 安装依赖并自动启用 husky 钩子 pnpm format # 手动用 oxfmt 格式化 src/ 目录 pnpm lint # 手动全量 lint(oxlint + eslint) git commit # 提交,自动触发 pre-commit 与 commit-msg 钩子 ``` ### 5. 跳过钩子(仅调试/紧急时用) ```sh git commit --no-verify # 跳过所有 Git 钩子(不推荐常规使用) HUSKY=0 git commit # 临时禁用 husky 钩子 HUSKY=2 git commit # 开启 husky 调试日志,观察钩子执行过程 ```