您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
Git message规范Change log编写指南
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
Git message规范Change log编写指南
京东ZERO团队
2021-01-07
IP归属:未知
28000浏览
Git
### 1.介绍Commit message 的格式 项目的 `Git Commit Message` 参考了 [AngularJS 规范](https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y) ```bash <type>(<scope>): <subject> // 空一行 <body> // 空一行 <footer> ``` `type` 类型,修改的类型级别: - feat: 新功能 - fix: 修补 Bug - docs: 文档 - style: 格式变更,不影响代码的运行 - refactor: 重构(既不是新增功能,也不是修改 bug 的代码变动) - test: 增加测试 - chore: 构建过程或辅助工具的变动 - up: 不属于上述分类时,可使用此类别 - merge: 用于 merge branch 时,需要手写 commit message 的情况 - revert: 用于撤销之前的 commit `scope` 修改范围,主要是这次修改涉及到的部分,最好简单的概括 `subject` 修改的副标题,主要是具体修改的加点 `body` 修改的主体标注 `footer` 放置不兼容变更和Issue关闭的信息 ### 2.生成符合格式的 Commit message 现在根目录下新建`commitlint.config.js`配置文件 ```javascript module.exports = { extends: ['@commitlint/config-angular'] }; ``` 在安装`commitizen`包 ```bash npm install -g commitizen npm install cz-conventional-changelog -D commitizen init cz-conventional-changelog -D ``` 将会自动生成: ```json "config": { "commitizen": { "path": "./node_modules/cz-conventional-changelog" } } ``` 运行`git cz` 或者 给`package.json`添加脚本`scripts` ```javascript { "commit": "git-cz" } ``` 如下所示 ![image.png](https://img30.360buyimg.com/pop/jfs/t1/107730/21/7191/152317/5e5725ecE91915563/2c45ecffdff4b8fe.png) ### 3.限制提交的git message 安装`git`钩子`husky`,并配置 ```bash npm i -D husky ``` ```javascript { "husky": { "hooks": { "pre-commit": "lint-staged", "commit-msg": "commitlint -e $GIT_PARAMS" } }, } ``` 安装message提交规范插件 `commitlint` ```bash npm i -D @commitlint/config-conventional @commitlint/cli, ``` 并配置 ```javascript { "commitlint": { "extends": [ "@commitlint/config-conventional" ] } } ``` ![image.png](https://img30.360buyimg.com/pop/jfs/t1/91068/3/13274/151505/5e572606Ecdffdbfb/f70192f7f1cd9264.png) 原理是在`git`的钩子文件中添加钩子,打开钩子文件夹,都会存在一份带有`.sample` 的,一份不带`.sample` 的,`git`在执行提交的时候会先运行新增不带`.sample`的钩子文件。如果 ```bash node_modules/_run-node@1.0.0@run-node/run-node "$scriptPath" $hookName "$gitParams" ``` ![image.png](https://img30.360buyimg.com/pop/jfs/t1/86746/5/13260/846538/5e57260dE529436fb/b58be87f534e5c83.png) > 如果没有此文件,则安装husky失败,请运行npm rebuild ### 4.Eslint配置 审查代码编码规范,统一代码风格。 ```bash cnpm i eslint lint-staged ``` ```javascript "scripts": { "eslint-fix":{ "eslint-fix": "eslint --fix --format codeframe 'src/**/*.{js,jsx}' } }, "husky": { "hooks": { "pre-commit": "lint-staged", "commit-msg": "commitlint -e $GIT_PARAMS" } }, "lint-staged": { "src/**/**.js": [ "eslint --fix", "git add" ] } ``` ![image.png](https://img30.360buyimg.com/pop/jfs/t1/109343/18/7039/97064/5e57260fEb3eba33e/0ab3d86fed69cc80.png) ### 5.新增标签tag 自动生成新的`tag`,并产生`changlog` ```bash cnpm i standard-version -D ``` ```javascript { "release": "standard-version", } ``` 可以由"standard-version"自动加`1`生成`tag`,而且会更改`package.json`中的`version`字段。 也可以自己指定生成对应的`tag` ```bash npm run release -- --release-as 1.0.0 ``` ![image.png](https://img30.360buyimg.com/pop/jfs/t1/100585/3/13460/175054/5e572612E06446de3/9924911caef2d265.png) ### 6.生成changelog 当然也可以不加`tag`,自己生成`changelog`。给`package.json`添加脚本`scripts` ```bash npm install conventional-changelog-cli -D ``` ```javascript { "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0" } ``` > -s --same-file 输出到指定文件CHANGELOG.md > -r 0 --release-count tag生成数量,0为重新生成整个变更日志,包含所有tag ![image.png](https://img30.360buyimg.com/pop/jfs/t1/108228/37/7150/134955/5e57261fEb39e4649/fc8309a15aec5798.png) Happy coding .. :) ### 相关文档 [AngularJS Git提交信息规范](https://segmentfault.com/a/1190000004282514) [Commit message 和 Change log 编写指南](https://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html) [changelog案例](https://github.com/raoenhui/react-example.git)
原创文章,需联系作者,授权转载
上一篇:京东星店长移动端自动播放视频实践
下一篇:小程序swiper下拉判断是否拉到底部
相关文章
【技术干货】企业级扫描平台EOS关于JS扫描落地与实践!
Git message规范Change log编写指南
京东ZERO团队
文章数
39
阅读量
91750
作者其他文章
01
webpack打包组件配置(React版本)
这篇文章是以打包react插件的形式,介绍webpack的一些配置信息。如果写简单插件的话还是推荐使用rollup,但是可以用写插件的形式去学习一下webpack的一些东西。(适用于初中级webpack学者)
01
webpack核心概念与基本实现
webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。**
01
Typescript合成Webpack中
TypeScript是JavaScript类型的超集,它可以编译成纯JavaScript,简称ts。相对于ES6,TypeScript最大的改善是增加了类型系统,国内外很多大型工程都用它,如AngularJs,白鹭引擎、Antd。
01
小程序加载svg图片
小程序的[组件](https://developers.weixin.qq.com/miniprogram/dev/component/)中是没有支持`SVG`标签的。 但是在前端小伙伴的实际开发中,UED经常提供SVG图片过来,如果不想用引入`iconfont`的话,那么妹子我将介绍个很好用的方法。
最新回复
丨
点赞排行
共0条评论
京东ZERO团队
文章数
39
阅读量
91750
作者其他文章
01
webpack打包组件配置(React版本)
01
webpack核心概念与基本实现
01
Typescript合成Webpack中
01
小程序加载svg图片
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号