-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.releaserc.cjs
More file actions
84 lines (80 loc) · 2.74 KB
/
.releaserc.cjs
File metadata and controls
84 lines (80 loc) · 2.74 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
// Override conventional-changelog templates to use `-` bullets instead of `*`.
// oxfmt normalizes markdown bullets to `-`, so `*` from the default templates
// causes formatting drift on every release.
const { readFileSync } = require("node:fs");
const { resolve, dirname } = require("node:path");
const pkgEntry = require.resolve("conventional-changelog-conventionalcommits");
const templatesPath = resolve(dirname(pkgEntry), "templates.js");
const src = readFileSync(templatesPath, "utf8");
const extract = (name) => {
const re = new RegExp(`export const ${name} = \`([\\s\\S]*?)\``, "m");
return re.exec(src)?.[1] ?? "";
};
const mainTemplate = extract("mainTemplate").replace(/^\* /gm, "- ");
const commitPartial = extract("commitPartial").replace(/^\*/, "-");
module.exports = {
branches: ["main", { name: "prerelease", channel: "alpha", prerelease: "alpha" }],
tagFormat: "v${version}",
plugins: [
[
"@semantic-release/commit-analyzer",
{
preset: "conventionalcommits",
// Breaking detection from header `!` only; ignore `BREAKING CHANGE`
// in bodies. Notes generator below keeps defaults so the changelog
// still surfaces body prose.
parserOpts: {
noteKeywords: [],
},
releaseRules: [
{ breaking: true, release: "major" },
{ scope: "security", release: "patch" },
{ scope: "release", release: "patch" },
{ scope: "no-release", release: false },
{ type: "feat", release: "minor" },
{ type: "fix", release: "patch" },
{ type: "perf", release: "patch" },
{ type: "build", release: "patch" },
{ type: "refactor", release: "patch" },
{ type: "revert", release: "patch" },
{ type: "chore", release: false },
{ type: "ci", release: false },
{ type: "docs", release: false },
{ type: "style", release: false },
{ type: "test", release: false },
],
},
],
[
"@semantic-release/release-notes-generator",
{
preset: "conventionalcommits",
writerOpts: {
mainTemplate,
commitPartial,
},
},
],
[
"@semantic-release/changelog",
{
changelogFile: "CHANGELOG.md",
changelogTitle: "# Changelog",
},
],
[
"@semantic-release/exec",
{
prepareCmd: "node scripts/release/prepare-lockstep.mjs ${nextRelease.version}",
},
],
[
"@semantic-release/git",
{
assets: ["CHANGELOG.md", "packages/sdk/package.json", "packages/react-sdk/package.json"],
message: "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}",
},
],
"@semantic-release/github",
],
};