Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

前端工程化之代码提交规范(husky、commitizen、cz、lint-staged)配置 #22

Open
jynba opened this issue Sep 24, 2023 · 0 comments

Comments

@jynba
Copy link
Owner

jynba commented Sep 24, 2023

git-cz

cz
  • 首先安装 commitizen(不论是方式一或二)pnpm install -g commitizen

方式一

  • 全局安装
  1. 下载

pnpm install -g cz-conventional-changelog

  1. 创建 ~/.czrc 文件,写入如何内容

{ "path": "cz-conventional-changelog" }

  1. 这时就可以全局使用 git cz 命令来代替 git commit 命令了
  • 项目局部使用
  1. 下载 commitizen

pnpm install --save-dev commitizen

  1. 配置,打开项目的 package.json 文件,配置如下。
{
   "scripts": {
      "commit": "git-cz",
   },
   "config": {
      "commitizen": {
      "path": "node_modules/cz-conventional-changelog"
      }
   }
}
  1. 这时就可以使用 npm run commit 脚本了

方式二(自定义配置 git commit 注释规范)

  • 配置 cz-customizable 作为提交插件
    pnpm install cz-customizable -D
  • 配置 commitizen,在根目录 package.json 中添加
"scripts" : {
   ...
   "commit": "./node_modules/cz-customizable/standalone.js"
 }
 "config": {
   "commitizen": {
     "path": "node_modules/cz-customizable"
   }
 }
  • 新建.cz-config.js ,配置想要的代码提交注释规范
    如:
module.exports = {
  types: [
    {
      value: 'feat',
      name: 'feat: 新功能',
    },
    {
      value: 'fix',
      name: 'fix: 修复bug',
    },
    {
      value: 'init',
      name: 'init: 初始化',
    },
    {
      value: ':pencil2: docs',
      name: 'docs: 文档变更',
    },
    {
      value: 'style',
      name: 'style: 代码的样式美化',
    },
    {
      value: 'refactor',
      name: 'refactor: 重构',
    },
    {
      value: 'perf',
      name: 'perf: 性能优化',
    },
    {
      value: 'test',
      name: 'test: 测试',
    },
    {
      value: 'revert',
      name: 'revert: 回退',
    },
    {
      value: 'build',
      name: 'build: 打包',
    },
    {
      value: 'chore',
      name: 'chore: 构建/工程依赖/工具',
    },
    {
      value: 'ci',
      name: 'ci: CI related changes',
    },
  ],
  messages: {
    type: '请选择提交类型(必填)',
    customScope: '请输入文件修改范围(可选)',
    subject: '请简要描述提交(必填)',
    body: '请输入详细描述(可选)',
    breaking: '列出任何BREAKING CHANGES(可选)',
    footer: '请输入要关闭的issue(可选)',
    confirmCommit: '确定提交此说明吗?',
  },
  allowCustomScopes: true,
  allowBreakingChanges: ['feat', 'fix'], // 当提交类型为feat、fix时才有破坏性修改选项
  subjectLimit: 72,
}

husky 配置

hook 检查提交的注释是否符合规范(commitlint),将暂存区的代码(lint-staged)运行 lint

  • .husky 中

commit-msg 文件

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx --no-install commitlint --edit $1

pre-commit 文件

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx --no-install lint-staged

首次提交时 husky 可能会报错,可通过git commit --no-verify --allow-empty -m "initial commit"

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant