-
Notifications
You must be signed in to change notification settings - Fork 26
/
.releaserc.js
91 lines (78 loc) · 2.29 KB
/
.releaserc.js
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
/*
This file contains the configuration for semantic release, the library we use to tag the correct
semantic version numbers onto releases. We have two release paths, one on master and one on dev branch.
In the code below we check the env variable RELEASE_BRANCH to decide what we should do. As of
the time of this file semantic release does not support specifying a config file from their CLI,
so this is the only we can have dynamic configs based on branch.
To test run this file, first get a github token at https://github.com/settings/tokens
and add it to the GITHUB_TOKEN env variable then specify what branch you want to run (master or dev) under RELEASE_BRANCH
$ export GITHUB_TOKEN=<token>
$ export RELEASE_BRANCH=<main or release>
$ run yarn run semantic-release -d
*/
const commitAnalyzerSetting = [
'@semantic-release/commit-analyzer',
{
preset: 'angular',
releaseRules: [
{
type: 'feat',
release: 'minor',
},
{
type: '*',
release: 'patch',
},
],
parserOpts: {
noteKeywords: ['BREAKING CHANGE', 'BREAKING CHANGES'],
},
},
];
const githubSetting = [
'@semantic-release/github',
{
assets: [],
failTitle: false,
successComment: false,
failComment: false,
labels: false,
},
];
const gitSetting = [
'@semantic-release/git',
{
assets: ['package.json'],
message: 'chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}',
},
];
/**
* This is used to publish to npm
*/
const npmRelease = [
'@semantic-release/npm',
{
npmPublish: true,
pkgRoot: '.',
},
];
const changelogGen = ['@semantic-release/changelog', {}];
const releaseNotesGen = ['@semantic-release/release-notes-generator', {}];
let plugins;
if (process.env && process.env.RELEASE_BRANCH === 'master') {
plugins = [commitAnalyzerSetting, githubSetting, changelogGen, releaseNotesGen, npmRelease, gitSetting];
} else {
plugins = [githubSetting, npmRelease, gitSetting];
}
module.exports = {
branches: [
{
name: 'master',
},
{
name: 'dev',
prerelease: 'alpha',
},
],
plugins,
};