Skip to content

Commit f74a758

Browse files
committed
chore(changelog): add commit message verification
1 parent 68a865f commit f74a758

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

package.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,18 @@
3636
"test:types": "tsc -p types/test",
3737
"docs": "vuepress dev docs",
3838
"docs:build": "vuepress build docs",
39-
"release": "bash build/release.sh"
39+
"release": "bash build/release.sh",
40+
"prepublishOnly": "npm run build && conventional-changelog -p angular -r 2 -i CHANGELOG.md -s"
41+
},
42+
"gitHooks": {
43+
"pre-commit": "lint-staged",
44+
"commit-msg": "node scripts/verifyCommitMsg.js"
45+
},
46+
"lint-staged": {
47+
"*.{js,vue}": [
48+
"eslint --fix",
49+
"git add"
50+
]
4051
},
4152
"devDependencies": {
4253
"babel-core": "^6.24.1",

scripts/verifyCommitMsg.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const chalk = require('chalk') // eslint-disable-line
2+
const msgPath = process.env.GIT_PARAMS
3+
const msg = require('fs').readFileSync(msgPath, 'utf-8').trim()
4+
5+
const commitRE = /^(v\d+\.\d+\.\d+(-(alpha|beta|rc.\d+))?$)|((revert: )?(feat|fix|docs|style|refactor|perf|test|workflow|ci|chore|types)(\(.+\))?: .{1,50})/
6+
7+
if (!commitRE.test(msg)) {
8+
console.log()
9+
console.error(
10+
` ${chalk.bgRed.white(' ERROR ')} ${chalk.red(`invalid commit message format.`)}\n\n` +
11+
chalk.red(` Proper commit message format is required for automated changelog generation. Examples:\n\n`) +
12+
` ${chalk.green(`feat(compiler): add 'comments' option`)}\n` +
13+
` ${chalk.green(`fix(v-model): handle events on blur (close #28)`)}\n\n` +
14+
chalk.red(` See .github/COMMIT_CONVENTION.md for more details.\n`) +
15+
chalk.red(` You can also use ${chalk.cyan(`npm run commit`)} to interactively generate a commit message.\n`)
16+
)
17+
process.exit(1)
18+
}

0 commit comments

Comments
 (0)