vue,react,angular都在用的commit规范,了解一下?

简介: 良好的代码规范是必须的,良好的代码提交规范也很重要

截图来自vue的PR:

1.commit-message规范必要性

  1. 统一格式的提交记录,更清晰和易读
  2. 可以通过提交记录来了解本次提交的目的,更好的CR和重构
  3. 更容易了解变更,定位和发现问题
  4. 每个提交描述都是经过思考的,改善提交质量
  5. 直接生成ChangeLog

2.规范选型

常见的commit message规范有:atom,eslint和Angular等,其中Angular规范更为通用。

3.Angular的Commit Message规范简介

每条提交记录包含三个部分:header,body和footer

<header> <BLANK LINE> <body> <BLANK LINE> <footer>

Commit Message Header

<type>(<scope>): <short summary>
  │       │             │
  │       │             └─⫸ Summary in present tense. Not capitalized. No period at the end.
  │       │
  │       └─⫸ Commit Scope: animations|bazel|benchpress|common|compiler|compiler-cli|core|
  │                          elements|forms|http|language-service|localize|platform-browser|
  │                          platform-browser-dynamic|platform-server|router|service-worker|
  │                          upgrade|zone.js|packaging|changelog|dev-infra|docs-infra|migrations|
  │                          ngcc|ve
  │
  └─⫸ Commit Type: build|ci|docs|feat|fix|perf|refactor|test

其中type和summary是必要的,scope是可选的

Type 必须是以下的类型

  • feat: 新增页面或功能
  • fix: bug修复
  • build: 影响构建系统或外部依赖项的更改
  • ci: 对 CI 配置文件和脚本的更改
  • docs: 文档改动
  • perf: 性能提升改动
  • refactor: 不影响功能的代码重构(既不修复错误也不添加功能)
  • test: 添加或修改测试用例

Summary用来提供更改的简洁描述

4.规范实施

通过commitizen进行交互式提交,husky + commit-msg hook进行提交校验,cz-customizable来自定义交互提交流程和文案,standard-changelog来自动生成changelog

image-20210615173113038

1.使用commitizen工具,在commit时可以交互的方式选择type

安装commitizen

npm i -D commitizen

package.json中添加对应的npm script

"commit":"cz"

改动添加到暂存区后执行commit提交

npm run commit

2. 通过husky在git hooks中对不符合规范的提交进行拦截,拦截commitlint进行校验

安装husky , commitlint 和 符合angular提交规范的配置

npm i -D husky commitlint @commitlint/config-conventional

添加git hooks

npx husky install

package.json中添加prepare的npm hook, 在每次install自动执行(yarn v2+不支持prepare)

"prepare": "husky install"

执行添加commit-msg hook

如果使用husk v4.x版本(推荐升级到新版本),直接在package.json中或.huskyrc.json中新增commit-msg钩子即可

package.json

"husky": {     "hooks": {        "commit-msg": "commitlint --edit $1"      }  }

.huskyrc.huskyrc.json.huskyrc.jshusky.config.js

"hooks": {   "commit-msg": "commitlint --edit $1" }

如果使用husky v6+版本,需要添加对应的shell调用方式(husky v6对添加方式做了改动,所以无法通过添加配置到package.json中运行)

npx husky add .husky/commit-msg 'npx --no-install commitlint --edit $1'

添加commintlint配置(也可以放到package.json中指定)

echo "module.exports = { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js

package.json中添加commitlint配置

"commitlint": {      "extends": [         "@commitlint/config-conventional"      ]}

3. 扩展和自定义规范

commitizen提供的交互式默认是英文的,如果改成中文或者对交互流程进行改动,可以使用cz-customizable进行扩展和自定义

安装cz-customizable

npm i -D cz-customizable

package.json中添加配置

"config": {     "commitizen": {        "path": "node_modules/cz-customizable"     },     "cz-customizable": {        "config": ".cz-config.js"     } } 

.cz-config.js就是cz-customizable配置的具体文件了,可以参考CZ-Config-Example并进行改动, 可以把文案翻译成中文,自定义修改提示等。

也可以通过fork cz-customizable创建内封配置文件的npm包

npm i -D your-own-package

"config": { "commitizen": { "path": "node_modules/your-own-package" } }


配置文件可以自定义交互内容,比如可以只保留type scope breakchange confirm

*   选择提交类型
    
*   简单描述本次改动
    
*   是否有重大变更
    
*   确定提交
    

配置文件中设置skipQuestions: \['body','customScope','scope','footer'\],即可忽略其他选项

allowBreakingChanges: \['feat', 'fix'\], 仅在feat和fix时提示 breakchange

### 4.自动生成changelog

可以使用standard-changelog来自动生成changelog

npm i -D standard-changelog


配置npm script

"gen-changelog": "standard-changelog"


## 5.其他

通过npm script进行commit,如果eslint没有通过(在pre-commit 钩子中做了eslint检测),但是又想提交可以通过加'––'来向npm script传参

npm run commit -- --no-verify # or npm run commit -- -n

相关文章
|
20天前
|
XML JavaScript 前端开发
Vue和React有什么区别
【8月更文挑战第28天】Vue和React有什么区别
111 0
|
4天前
|
前端开发 JavaScript 开发者
Express.js与前端框架的集成:React、Vue和Angular的示例与技巧
本文介绍了如何将简洁灵活的Node.js后端框架Express.js与三大流行前端框架——React、Vue及Angular进行集成,以提升开发效率与代码可维护性。文中提供了详细的示例代码和实用技巧,展示了如何利用Express.js处理路由和静态文件服务,同时在React、Vue和Angular中构建用户界面,帮助开发者快速掌握前后端分离的开发方法,实现高效、灵活的Web应用构建。
26 3
|
3天前
|
JavaScript 前端开发 API
如何在前端开发中有效管理状态:React vs. Vue
在现代前端开发中,状态管理是一个关键因素,它直接影响到应用的性能和可维护性。React 和 Vue 是当前最流行的前端框架,它们在状态管理方面各有优势和劣势。本文将深入探讨 React 和 Vue 在状态管理中的不同实现,分析它们的优缺点,并提供实际应用中的最佳实践,以帮助开发者选择最适合他们项目的解决方案。
|
18天前
|
XML 前端开发 JavaScript
React 与 Angular:全面的比较
【8月更文挑战第30天】
35 1
|
17天前
|
前端开发 Java Spring
Spring与Angular/React/Vue:当后端大佬遇上前端三杰,会擦出怎样的火花?一场技术的盛宴,你准备好了吗?
【8月更文挑战第31天】Spring框架与Angular、React、Vue等前端框架的集成是现代Web应用开发的核心。通过RESTful API、WebSocket及GraphQL等方式,Spring能与前端框架高效互动,提供快速且功能丰富的应用。RESTful API简单有效,适用于基本数据交互;WebSocket支持实时通信,适合聊天应用和数据监控;GraphQL则提供更精确的数据查询能力。开发者可根据需求选择合适的集成方式,提升用户体验和应用功能。
48 0
|
17天前
|
开发者 缓存 数据库
【性能奇迹】Wicket应用的极速重生:揭秘那些让开发者心跳加速的调优秘技!
【8月更文挑战第31天】在软件开发中,性能优化是确保应用快速响应和高效运行的关键。本书《性能调优:Apache Wicket应用的速度提升秘籍》详细介绍了如何优化Apache Wicket应用,包括代码优化、资源管理、数据库查询优化、缓存策略及服务器配置等方面。通过减少不必要的组件渲染、优化SQL查询、使用缓存和调整服务器设置等方法,本书帮助开发者显著提升Wicket应用的性能,确保其在高并发和数据密集型场景下的稳定性和响应速度。
28 0
|
17天前
|
Java 前端开发 Spring
技术融合新潮流!Vaadin携手Spring Boot、React、Angular,引领Web开发变革,你准备好了吗?
【8月更文挑战第31天】本文探讨了Vaadin与Spring Boot、React及Angular等主流技术栈的最佳融合实践。Vaadin作为现代Java Web框架,与其他技术栈结合能更好地满足复杂应用需求。文中通过示例代码展示了如何在Spring Boot项目中集成Vaadin,以及如何在Vaadin项目中使用React和Angular组件,充分发挥各技术栈的优势,提升开发效率和用户体验。开发者可根据具体需求选择合适的技术组合。
28 0
|
27天前
|
存储 JavaScript 前端开发
"探索Redux的Vuex化:如何在React世界中享受Vue状态管理的优雅与强大"
【8月更文挑战第21天】在现代前端开发中,状态管理至关重要。Vuex作为Vue.js的状态管理库,通过集中式存储和严格规则确保状态变更的追踪。Redux则以其在React生态中的可预测性和灵活性著称。两者都强调单一数据源、状态只读及使用纯函数变更状态。尽管API设计不同,理解Redux的核心概念——单一数据源(`store`)、状态只读与纯函数变更(`reducers`),并参考Vuex的`state`、`mutations`等,能帮助开发者快速掌握Redux,高效管理应用状态。
15 0
|
4月前
|
设计模式 前端开发 数据可视化
【第4期】一文了解React UI 组件库
【第4期】一文了解React UI 组件库
294 0
|
4月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
98 0