You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1. Make changes
2. Commit those changes
3. Make sure Travis turns green
4. Bump version in package.json
5. conventionalChangelog
6. Commit package.json and CHANGELOG.md files
7. Tag # 敲黑板!
8.Push
Tips 如果不打 tag 每回生成的 CHANGELOG.md 都会包含之前的 commit 记录!
$ git cz
[email protected], [email protected]# 1。选择类型? Select the type of change that you are committing:
❯ feat: A new feature
fix: A bug fix
docs: Documentation only changes
style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
refactor: A code change that neither fixes a bug nor adds a feature
perf: A code change that improves performance
test: Adding missing tests or correcting existing tests
chore: Other changes that do not modify src or test files
revert: Reverts a previous commit
# 2. 填写scope 这里我们统一使用当天日期 格式为 月-日 (带上0)必填? What is the scope of this change (e.g. component or file name): (press enter to skip) 07-23
# 3. 设置短标题 必填? Write a short, imperative tense description of the change (max 87 chars): 我是短标题
# 4. 设置长描述 选填, 填写之前 务必 搞已给缩进 防止 commit 过多的时候 眼花缭乱? Provide a longer description of the change: (press enter to skip)
# 5. 根据实际情况 选填? Are there any breaking changes? (y/N)
# 6. 根据实际情况 选填? Does this change affect any open issues? (y/N)
$ git add .
$ git com -m 我就不按规矩来怎么滴!
ℹ No staged files match any configured task.
⧗ input: 我就不按规矩来怎么滴!
✖ subject may not be empty [subject-empty]
✖ type may not be empty [type-empty]
✖ found 2 problems, 0 warnings
ⓘ Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint
husky - commit-msg hook exited with code 1 (error)
3.5 总结
生成固定格式的 commit 有两种方式
自动生成:省时省力
手动生成:费时费力
防止通过正常 git commit 提交不符合固定格式的 commit
使用 commitlint
总之上述操作就是为了生成固定格式的 commit
The text was updated successfully, but these errors were encountered:
前端工程化中的 2 种规范
涉及依赖简单介绍
husky
: 用于创建git hooks
,并往hooks
里添加要执行的脚本lint-staged
: 对改动的指定类型文件执行相应的脚本如eslint
!需配合husky
使用,commitizen(cz-cli)
: 一个 commit 脚手架,使用它时会经历一系列的问答生成固定格式的 commit,该格式同时也会被其他依赖库使用conventional-changelog-cli
: 读取cz-cli
生成的特定格式commit
结合tag
标签生成固定格式的CHANGELOG.md
commitlint
: 检测人为手动提交commit
时是否符合定制化的rules
确保团队commit
符合规范1. 我的开发流程
在一个功能需求从
确认排期
=>开发
=>测试
=>上线
期间,这里按照不同阶段采取相应的 操作处理。这里以当前使用的gitlab
仓库为例。1.1 相关资料
先简单概述一下接下来要做的操作流程:
确定排期 => 开发 => 测试
阶段: (GitLab
,GitHub
)label
(供issue
,M(P)R
,Milestones
使用)Milestones
里程碑issue
M(P)R
Milestones
, 将issue
,M(P)R
归属到对应的Milestones
开发 => 测试 => 上线
阶段: (工程项目)commit
CHANGLOG.md
issue
,M(P)R
的label
状态1.2 创建 & 关联
创建
label
这里主要分为 2 大种类(
优先级
,状态
) 以及其他
,如图所示:创建
Milestones
里程碑里程碑的作用主要是盛放
issue
,M(P)R
,这里是以月份的维度
进行划分的,一个里程碑表示一个月份.这么做也会有个好处,就是当你进行 KPI 自评的时候可以很清晰的知道自己做了什么东西,不然每回都要自己去翻阅邮件是一件比较蛋疼的事情!
先来看一下
Milestones
外层:再来看一下内层:
创建
issue
一个 issue 代表一个功能,可能是新增功能也可能是 bug 修复也有可能是其他相关,
issue
应该包含相关需求
内容以及相关人员
。同时在创建期间请关联相关的label
,Milestones
以及Assignee
先来看一下 issue 外层:
再来看一下内层:
创建
M(P)R
创建
M(P)R
的时机我认为不应该在准备上线阶段在创建,应该在分支推送到远端时就要创建,这样每回提交到远端以后就能及时review
代码情况,发现问题及时处理。同时也能在队友之间了解一下整个项目的情况(当然这个重点不是在于监督对方!!!重点在于自检)等到自检完以后再把MR
链接开放非队友review
.同上,创建
MR
的同时也要关联相关的label
,Milestones
以及Assignee
。先来看一下外层:
再来看一下内层:
小小建议
不知道发现没有,在
issue
,Milestones
以及MR
模块中都会有一个Tis 必读
的label
相关提示?这里我是刻意而为之,里面给出了相关模块的规范说明,方便新人在创建相关模块数据的时候知道怎么创建怎么样做符合规范,以MR
为例如下图:小结
label
用于标记issue
&MR
issue
&MR
含(关联)于Milestones
issue
,MR
,Milestones
时尽量给个类似Tips 必读
的提示,方便新人3.3 创建特定格式的 commit & 自动生成 CHANGELOG .md
上面已经提及了如何创建特定格式的 commit 了,那么在合并到 master 分支之前应该保证自己的分支 commit 记录符合规范且最后一个 commit 的类型为 chore。
然后根据特定格式的
commit
生成CHANGELOG.md
创建特定格式的 commit 格式如下:
从上可知 分为
2commits
,2commits+
生成 CHANGELOG .md
这里用到了conventional-changelog-cli,它的原理就是根据
cz-cli
创建的特殊格式的commit
生成CHANGELOG.md
,相关操作看官网这里不做过多解释。先看看官网给的步骤:
最终效果如下图:
查看开源项目的 CHANGELOG & commit
通过查看对比优秀的开源项目,即可发现
commit
提交的规范是什么,感兴趣的可以打开上面两个链接对比一下小结
feat
fix
perf
revert
的commit
跟版本号关联。其他类型则不需要更改版本号2.代码规范
2.1 相关资料
2.2 交给 eslint
发展至今
eslint
已经足够完善也足以满足很多团队的需要,所以没有必要重复造轮子,这里直接使用eslint
统一代码风格。如果默认的满足不了你的需求,那就定制化规则~2.3 全量 eslint & 定向 eslint & 部分 eslint
以
vue-cli3+
生成的项目为例,项目package.json
中的scripts
下会有这么一段脚本全量 eslint
定向 eslint
有没有更简单更快捷的方法?有!第三种
部分 eslint (只对当前被更改的文件进行 eslint)
这种情况就要用到了 husky, lint-staged 且触发时机是在提交
commit
之前进行触发。这里说一下主流程:
安装 husky & 执行脚本
添加 git hooks & 写入 lint-staged 脚本
安装 lint-staged & 设置参数
# 安装 npx mrm@2 lint-staged
经过上述配置就可以实现每次执行
commit
的时候就会触发pre-commit
钩子对当前被更改的文件进行
eslint
格式化了。如果你对默认的
eslint
规则不太满意那就直接修改规则,根据自己的项目定制化eslint
规则~~,这里我使用了是其中一种文件格式yaml
,.eslintrc.yaml
部分内容如下:2.4 小结
通过上述
1.3
这么一个操作,开发期间可以按照自己的风格去写代码,但是不管你怎么写,最终都会被eslint
给强制格式化!这样就能保证主干分支master
的代码风格统一!目的达到完美~3. commit 规范
3.1 相关资料
commitlint
3.2 commit 固定格式
关于这个
固定格式
我相信还是有一部分人是不知道的!在这里介绍一下:上述格式的
commit
我们可以直接通过cz-cli
来生成,这就是为什么要引入这个cz-cli
的原因。当然工具只是帮我们节省时间快速生成固定格式而已。手动生成也是可以的,就是效率可能没有工具那么高而已。3.3 生成固定格式的 commit
自动生成
上文已经提及,自动生成需要接入
cz-cli
接下来简单的看看大概过程:git add .
git cz 或 cz
执行完已上操作以后就会生成如下格式的
commit
记录:手动生成
git add .
git com -m '<message>'
看看结果
总之不管你是
手动
生成还是借助cz-cli
自动
生成,目的只有一个!就是生成特定格式的commit
记录,为后面生成CHANGELOG.md
另外关于
scope
作用域这个东西实在不知道命名,所以就直接使用了日期的格式已创建commit
时的日期来定义。3.4 防止他人跳过固定格式的 commit 约束!!!
上文有提及,人不是程序,人会犯错!为了避免 不规范的
commit
被提交到远端,此时需要接入commitlint!安装
commitlint
这里也会涉及
git hooks
所以也会用到husky
文档里有介绍!设置 commitlint 的配置文件
commitlint.config.js
这里需要说明一下,因为
cz-cli
已经自带了一些风格限制,为了避免人为直接使用git commit
的风格跟cz-cli
的不一样,所以commitlint
的规则 得跟cz-cli
保持一致查看效果
3.5 总结
生成固定格式的 commit 有两种方式
防止通过正常 git commit 提交不符合固定格式的 commit
总之上述操作就是为了生成固定格式的 commit
The text was updated successfully, but these errors were encountered: