-
-
Notifications
You must be signed in to change notification settings - Fork 118
Expand file tree
/
Copy pathrelease.config.cjs
More file actions
94 lines (86 loc) · 2.64 KB
/
release.config.cjs
File metadata and controls
94 lines (86 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/**
* Semantic Release Configuration for CtxPort
*
* This config handles:
* - Version calculation based on conventional commits
* - Syncing version to browser extension manifest
* - CHANGELOG generation
* - Git commit and tag
* - GitHub release creation
*
* Note: Actual store publishing (Chrome/Edge) is handled by the
* release-extension.yml GitHub Action using `wxt submit`
*/
const changelogFile = "CHANGELOG.md";
module.exports = {
branches: ["main"],
tagFormat: "v${version}",
plugins: [
// Analyze commits to determine version bump
[
"@semantic-release/commit-analyzer",
{
preset: "conventionalcommits",
releaseRules: [
{ type: "feat", release: "minor" },
{ type: "fix", release: "patch" },
{ type: "perf", release: "patch" },
{ type: "refactor", release: "patch" },
{ type: "docs", release: false },
{ type: "style", release: false },
{ type: "chore", release: false },
{ type: "test", release: false },
{ type: "ci", release: false },
{ breaking: true, release: "major" },
],
},
],
// Generate release notes
[
"@semantic-release/release-notes-generator",
{
preset: "conventionalcommits",
presetConfig: {
types: [
{ type: "feat", section: "Features" },
{ type: "fix", section: "Bug Fixes" },
{ type: "perf", section: "Performance" },
{ type: "refactor", section: "Refactoring" },
{ type: "docs", section: "Documentation", hidden: true },
{ type: "style", section: "Styles", hidden: true },
{ type: "chore", section: "Chores", hidden: true },
{ type: "test", section: "Tests", hidden: true },
{ type: "ci", section: "CI", hidden: true },
],
},
},
],
// Update CHANGELOG.md
["@semantic-release/changelog", { changelogFile }],
// Sync version to manifest and commit
[
"@semantic-release/exec",
{
prepareCmd:
'node scripts/sync-manifest-version.mjs "${nextRelease.version}"',
},
],
// Update package.json version (no npm publish)
["@semantic-release/npm", { npmPublish: false }],
// Git commit and push
[
"@semantic-release/git",
{
assets: [
"package.json",
"apps/browser-extension/wxt.config.ts",
changelogFile,
],
message:
"chore(release): v${nextRelease.version} [skip ci]\n\n${nextRelease.notes}",
},
],
// Create GitHub release
"@semantic-release/github",
],
};