资讯专栏INFORMATION COLUMN

如何文明提交代码

BaronZhang / 747人阅读

摘要:程序员最烦的几件事写测试,变量命名,还有填代码提交信息。其实的作用远不止如此,经过简单的配置便可无痛成为代码提交的文明公民。好的提交历史可以方便其他人参与进来,也可以方便自己快速定位问题。

程序员最烦的几件事:写测试,变量命名,还有填代码提交信息(commit message)。翻几个开源项目遍马上可以回味那作文凑字数的青春时光。

其实 commit message 的作用远不止如此,经过简单的配置便可无痛成为代码提交的文明公民。

Commit Message 的作用

最起码的一点,项目的提交历史是其他人(包括未来的自己)了解项目的一个重要途径。好的提交历史可以方便其他人参与进来,也可以方便自己快速定位问题。

此外,提交信息还可以用来触发 CI 构建,自动生成 CHANGELOG ,版本自动语义化提升…… 只需要一点点配置就可以干这么多,真是懒人必备。

选择风格

跟 Code Style 一样,Commit Message 也有各种风格。如果没什么特殊癖好推荐用基于 Angular ,
后独立开来的 Conventional Commits 风格。
它也基本是各个工具的默认配置,所以搭配起来不需要折腾。

才不要又记什么规则

虽然规则不多,但不一定能随时记住,特别是对新人,必须要有友好的方式提交。

commitizen 是一个很好的选择,通过命令行回答几个问题即可填完信息,减轻了记忆负担。
它是一个通用的工具,通过插件方式支持各种风格。我们选择 Conventional 需要安装
cz-conventional-changelog 。

npm install --save-dev commitizen cz-conventional-changelog

然后配置 package.json 就可以通过 npm run commit 提交。

{
  "scripts": {
    "commit": "git-cz"
  }
}

另外 VSCode 用户也可以用 vscode-commitizen ,
通过 ctrl+shift+pcommand+shift+p 提交。

Lint 一 Lint 万无一失

没错,Commit Message 也有 Linter ,可对 Commit Message 进行检验,杜绝打字手残和浑水摸鱼。

这里用 commitlint 配合 husky 实现自动检测。

commitlint 也是通用的工具,需要同时安装风格配置。 husky 可以方便使用 git hooks ,在 commit 时触发 commitlint 。

npm install --save-dev @commitlint/cli @commitlint/config-conventional husky

项目根新建 commitlint.config.js

module.exports = {
  extends: ["@commitlint/config-conventional"]
}

配置 package.json

{
  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  },
}
自动更新

最后安装 standard-version 实现自动生成 CHANGELOG 和版本自动语义化提升。

npm install --save-dev standard-version

配置 package.json

{
  "scripts": {
    "release": "standard-version"
  }
}

第一次发布时可以用以下命令重置

npm run release -- --first-release

以后直接 npm run release 即可。

也可以手动指定版本:

# npm run script
npm run release -- --release-as minor
# Or
npm run release -- --release-as 1.1.0
小红花贴起来

在 README 中加入小徽章可方便其他人了解风格。

[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg?maxAge=2592000)](http://commitizen.github.io/cz-cli/)
[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-brightgreen.svg?maxAge=2592000)](https://conventionalcommits.org)
完整配置

安装

npm install --save-dev commitizen cz-conventional-changelog @commitlint/cli @commitlint/config-conventional husky standard-version

配置 package.json

{
  "scripts": {
    "commit": "git-cz",
    "release": "standard-version"
  },
  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  },
}

项目根新建 commitlint.config.js

module.exports = {
  extends: ["@commitlint/config-conventional"]
}

【完】

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97964.html

相关文章

  • 云计算只是云计算?那你就错了

    摘要:有了云计算,将计算机系统维护的功能从企业内分离出来,促进了社会分工。云计算促进向服务转型云计算以三种形式提供服务,和。云计算实际上是计算能力基于统一管理的基础实施,以服务的形式提供给用户的一种形式。从2012年创办物联网媒体开始研究物联网,2014年因为工业4.0概念开始关注智能制造,无论物联网,工业4.0,还是工业互联网,其特点都是一致的,这些概念都是在云计算技术突破后发展起来的。我认为云...

    姘存按 评论0 收藏0
  • js、jQuery实现文字上下无缝轮播、滚动效果

    摘要:因项目需要实现消息通知上下无缝轮播的效果,所以写了一下,在这个分享出来,希望再次遇到此需求的道友,可以直接拷贝来用,节约一点不必要的时间。 因项目需要实现消息通知上下无缝轮播的效果,所以写了一下,在这个分享出来,希望再次遇到此需求的道友,可以直接拷贝来用,节约一点不必要的时间。 原生JS版本 文字上下无缝轮播 * { margin: ...

    zhangwang 评论0 收藏0
  • js、jQuery实现文字上下无缝轮播、滚动效果

    摘要:因项目需要实现消息通知上下无缝轮播的效果,所以写了一下,在这个分享出来,希望再次遇到此需求的道友,可以直接拷贝来用,节约一点不必要的时间。 因项目需要实现消息通知上下无缝轮播的效果,所以写了一下,在这个分享出来,希望再次遇到此需求的道友,可以直接拷贝来用,节约一点不必要的时间。 原生JS版本 文字上下无缝轮播 * { margin: ...

    PAMPANG 评论0 收藏0
  • js、jQuery实现文字上下无缝轮播、滚动效果

    摘要:因项目需要实现消息通知上下无缝轮播的效果,所以写了一下,在这个分享出来,希望再次遇到此需求的道友,可以直接拷贝来用,节约一点不必要的时间。 因项目需要实现消息通知上下无缝轮播的效果,所以写了一下,在这个分享出来,希望再次遇到此需求的道友,可以直接拷贝来用,节约一点不必要的时间。 原生JS版本 文字上下无缝轮播 * { margin: ...

    focusj 评论0 收藏0

发表评论

0条评论

BaronZhang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<