-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathrelease.config.cjs
More file actions
96 lines (89 loc) · 2.39 KB
/
release.config.cjs
File metadata and controls
96 lines (89 loc) · 2.39 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
95
96
const branch = process.env.GITHUB_REF_NAME;
const customTag = process.env.CUSTOM_TAG;
const dryRun = process.env.DRY_RUN;
const assetsToUpdate = ["package.json", "package-lock.json"];
if (branch === "master") {
assetsToUpdate.push("CHANGELOG.md");
}
// Build branches array dynamically
const branches = [
"master",
{ name: "next", channel: "next", prerelease: true }
];
// If custom tag is provided (manual trigger), add it as a prerelease branch
if (customTag) {
branches.push({
name: branch,
channel: customTag,
prerelease: customTag
});
}
// Build plugins array
const plugins = [
[
"@semantic-release/commit-analyzer",
{
preset: "angular",
releaseRules: [
{ breaking: true, release: "major" },
{ type: "docs", scope: "README", release: "patch" },
{ type: "build", scope: "deps", release: "patch" },
{ type: "refactor", release: "patch" },
{ type: "style", release: "patch" }
],
parserOpts: {
noteKeywords: ["BREAKING CHANGE", "BREAKING CHANGES"]
}
}
],
[
"@semantic-release/release-notes-generator",
{
preset: "conventionalcommits",
parserOpts: {
noteKeywords: ["BREAKING CHANGE", "BREAKING CHANGES"]
},
presetConfig: {
types: [
{ type: "feat", section: "🚀 Features" },
{ type: "fix", section: "🩹 Bug Fixes" },
{ type: "perf", section: "⚡ Performance Improvements" },
{ type: "revert", section: "↩️ Reverts" },
{ type: "docs", section: "📖 Documentation" },
{ type: "refactor", section: "🛠️ Code Refactoring" },
{ type: "test", section: "🧪 Tests" },
{ type: "build", scope: "deps", section: "🏗 Dependency updates" },
{ type: "build", hidden: true }
]
}
}
],
"@semantic-release/changelog",
[
"@semantic-release/npm",
{
npmPublish: !dryRun
}
],
[
"@semantic-release/git",
{
assets: assetsToUpdate
}
]
];
// Only add GitHub plugin if not using custom tag
if (!customTag) {
plugins.push([
"@semantic-release/github",
{
successCommentCondition:
'<% return issue.pull_request || !nextRelease.channel || !issue.labels.some(label => label.name === "released on @next"); %>'
}
]);
}
const config = {
branches: branches,
plugins: plugins
};
module.exports = config;