Skip to content

代码规范

建议

请确保已阅读《准备工作 - 开发环境》,并且按照文档说明安装好相关软件及扩展。

为保证代码风格统一,请使用 Visual Studio Code 做为开发 IDE ,框架源码里已提供相关配置文件,可直接测试效果:在保存代码时,会自动对当前文件进行代码格式化操作。

ESLint 配置

配置文件为 eslint.config.js ,框架使用 @pubinfo/eslint-config 做为基础规范,如果你对默认的规则有异议,可以查阅 ESLint 官网规则并在根目录下的 eslint.config.js 文件中进行覆盖,校验具体规则查看前端开发规范

当你对规则进行修改后,原有的代码可能会因为规则的变动导致编辑器大量提示错误,你可以通过运行 pnpm run lint 进行一次格式校验,如果规则支持自动修复,则会将不符合规则的代码自动进行格式化。

查看规则

你可以用通过如下代码查看当前项目的 ESLint 配置项,方便针对性的修改

bash
pnpm run viewer:eslint-rule -w

StyleLint 配置

配置文件为 stylelint.config.js ,如果你对默认的规则有异议,可以查阅 Stylelint 官网规则并在 stylelint.config.js 文件中进行修改。

当你对规则进行修改后,原有的代码可能会因为规则的变动导致编辑器大量提示错误,你可以通过运行 pnpm run lint 进行一次格式校验,如果规则支持自动修复,则会将不符合规则的代码自动进行格式化。

TIP

通过修改 stylelint.config.jsignoreFiles 配置可忽略无需做代码规范校验的文件,例如在项目中导入了一些第三方的插件代码或组件代码,我们就可以将其进行忽略。

Gitlint

通过执行 pnpm run commit 交互式提交 commit message,可以帮助我们规范化提交信息,以便更好的管理项目。 例如可以生成项目 CHANGELOG.md 文件,方便查看项目的更新日志。

执行指令之后需要按照提示进行操作

  选择你要提交的类型 : Use arrow keys or type to search
 feat:     ✨  新增功能
 types:    🎨  类型相关
 docs:     📝  文档更新
 style:    💄  代码格式
 refactor: ♻️   代码重构
 perf:     ⚡️  性能提升
 test:     ✅  测试相关
 build:    📦️  构建相关
 release:  🔖  版本提升
 ci:       🎡  持续集成
 revert:   ⏪️  回退代码
 chore:    🔨  其他修改
 init:     🎉  初始化

  选择一个提交范围: Press <space>|<right> to select, <enter> to submit
 docs
 utils
 project
 ci
 deploy
 other

  填写简短精炼的变更描述 :
  描述你本次提交的信息

  填写更加详细的变更描述(可选)。使用 "|" 换行 :
  可以省略 

  Is any BREAKING CHANGE (add "!" in header) (optional) ? (y/N)
  N 

  选择关联issue前缀(可选): Use arrow keys or type to search
 skip
 custom

注意

如果使用了 git commit -m 提交,那么输入的 msg 会在提交时候被 huskycommit-msg 钩子拦截校验,如果不符合规范会被拒绝提交。

git 规范化可以基于 commitizencz-customizable 进行扩展,具体配置请查看 commitizencz-customizable 的文档。

Husky 和 lint-staged

由于 IDE 能做的事比较有限,只能对代码的书写规范进行格式化,对于一些无法自动修复的错误代码,如果没有改正到就被推送到 git 仓库,在多人协作开发时,可能会影响到别人的开发体验。所以框架集成了 huskylint-staged 这两个依赖来解决这一问题。

在提交代码时, husky 会通过 lint-staged 对本次提交变更的文件进行分别进行 eslintstylelint 检测,如果有报错,则会阻止本次代码提交,直到开发者修改完所有错误代码后,才允许提交到 git 仓库,这样可以确保 git 仓库里的代码不会有不规范的代码。

注意

请确保在安装依赖前,已经使用 git init 对项目进行过 git 环境初始化,如果你在安装依赖后再初始化了 git 环境,请在 git 环境初始化之后再执行一遍 pnpm install 安装命令。

Husky 和 simple-git-hooks

比较

目前 simple-git-hooksElementantDesignvue/core 等库使用较多,但是我们仍然推荐使用 huskylint-staged 校验时会有树级和颜色高亮等反馈,huskysimple-git-hooksgit hooks 钩子校验时部分电脑会丧失颜色高亮、树级塌陷,且这个bug已经挂了很久了,在 husky 钩子中通过 重启 tty 可以避免样式丢失,

bash
 if sh -c ": >/dev/tty" >/dev/null 2>/dev/null; then exec >/dev/tty 2>&1; fi