Skip to content

Commit 16b01a7

Browse files
committed
chore: config githooks
1 parent 5aadeb9 commit 16b01a7

File tree

4 files changed

+649
-6
lines changed

4 files changed

+649
-6
lines changed

.github/commit-convention.md

+95
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
## Git Commit Message Convention
2+
3+
> This is adapted from [Commit convention](https://www.conventionalcommits.org/en/v1.0.0/).
4+
5+
#### TL;DR:
6+
7+
Messages must be matched by the following regex:
8+
9+
``` js
10+
/^((feat|fix|docs|style|core|i18n|a11y|report|misc|cli|audits|improve|security|deprecated|refactor|perf|test|workflow|build|ci|chore|types|wip|release|deps?|merge|examples?|revert)(\(.+\))?(:|!:)|(Merge|Revert|Version)) .{1,50}$/
11+
```
12+
13+
#### Examples
14+
15+
Appears under "Features" header, `compiler` subheader:
16+
17+
```
18+
feat(compiler): add 'comments' option
19+
```
20+
21+
Appears under "Bug Fixes" header, `v-model` subheader, with a link to issue #28:
22+
23+
```
24+
fix(v-model): handle events on blur
25+
26+
close #28
27+
```
28+
29+
Appears under "Performance Improvements" header, and under "Breaking Changes" with the breaking change explanation:
30+
31+
```
32+
perf(core): improve vdom diffing by removing 'foo' option
33+
34+
BREAKING CHANGE: The 'foo' option has been removed.
35+
```
36+
37+
The following commit and commit `667ecc1` do not appear in the changelog if they are under the same release. If not, the revert commit appears under the "Reverts" header.
38+
39+
```
40+
revert: feat(compiler): add 'comments' option
41+
42+
This reverts commit 667ecc1654a317a13331b17617d973392f415f02.
43+
```
44+
45+
### Full Message Format
46+
47+
A commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**:
48+
49+
```
50+
<type>(<scope>): <subject>
51+
<BLANK LINE>
52+
<body>
53+
<BLANK LINE>
54+
<footer>
55+
```
56+
57+
The **header** is mandatory and the **scope** of the header is optional.
58+
59+
### Revert
60+
61+
If the commit reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit. In the body, it should say: `This reverts commit <hash>.`, where the hash is the SHA of the commit being reverted.
62+
63+
### Type
64+
65+
If the prefix is `feat`, `fix` or `perf`, it will appear in the changelog. However, if there is any [BREAKING CHANGE](#footer), the commit will always appear in the changelog.
66+
67+
Other prefixes are up to your discretion. Suggested prefixes are `docs`, `chore`, `style`, `refactor`, and `test` for non-changelog related tasks.
68+
69+
### Scope
70+
71+
The scope could be anything specifying the place of the commit change. For example `core`, `compiler`, `ssr`, `v-model`, `transition` etc...
72+
73+
### Subject
74+
75+
The subject contains a succinct description of the change:
76+
77+
* use the imperative, present tense: "change" not "changed" nor "changes"
78+
* don't capitalize the first letter
79+
* no dot (.) at the end
80+
81+
### Body
82+
83+
Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes".
84+
The body should include the motivation for the change and contrast this with previous behavior.
85+
86+
### Footer
87+
88+
The footer should contain any information about **Breaking Changes** and is also the place to
89+
reference GitHub issues that this commit **Closes**.
90+
91+
**Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines. The rest of the commit message is then used for this.
92+
93+
```
94+
feat!: breaking change / feat(scope)!: rework API
95+
```

.github/workflows/release.yml

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Release
2+
3+
permissions:
4+
contents: write
5+
6+
on:
7+
push:
8+
tags:
9+
- 'v*'
10+
11+
concurrency:
12+
group: ${{ github.workflow }}-${{ github.ref }}
13+
cancel-in-progress: true
14+
15+
jobs:
16+
release:
17+
permissions:
18+
id-token: write
19+
contents: write
20+
runs-on: ubuntu-latest
21+
steps:
22+
- uses: actions/checkout@v4
23+
with:
24+
fetch-depth: 0
25+
26+
- name: Install pnpm
27+
uses: pnpm/action-setup@v4
28+
29+
- name: Set node
30+
uses: actions/setup-node@v4
31+
with:
32+
node-version: lts/*
33+
registry-url: https://registry.npmjs.org/
34+
35+
- name: Install
36+
run: pnpm install
37+
38+
- run: npx changeloggithub@latest
39+
env:
40+
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
41+
42+
- name: Publish
43+
run: npm publish
44+
env:
45+
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
46+
NPM_CONFIG_PROVENANCE: true

package.json

+14-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,12 @@
2929
"./package.json": "./package.json"
3030
},
3131
"scripts": {
32-
"build": "tsup"
32+
"build": "tsup",
33+
"prepublish": "npm run build",
34+
"release": "bummp",
35+
"lint": "tsc",
36+
"verify-commit": "verify-commit-msg",
37+
"prepare": "git-scm-hooks"
3338
},
3439
"repository": {
3540
"type": "git",
@@ -56,7 +61,14 @@
5661
},
5762
"homepage": "https://github.com/hunghg255/telegram-sdk#readme",
5863
"devDependencies": {
64+
"bumpp": "^9.4.1",
65+
"git-scm-hooks": "^0.0.11",
5966
"tsup": "^8.2.3",
60-
"typescript": "^5.5.4"
67+
"typescript": "^5.5.4",
68+
"verify-commit-msg": "^0.0.14"
69+
},
70+
"git-hooks": {
71+
"pre-commit": "npm run lint",
72+
"commit-msg": "npm run verify-commit"
6173
}
6274
}

0 commit comments

Comments
 (0)