-
-
Notifications
You must be signed in to change notification settings - Fork 36
/
release.config.js
124 lines (120 loc) · 4.23 KB
/
release.config.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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/**
* A configuration file for semantic-release
*
* @see {@link https://semantic-release.gitbook.io/semantic-release/} for about semantic-release.
* @see {@link https://semantic-release.gitbook.io/semantic-release/usage/configuration} for configuration details.
* @see {@link https://github.com/semantic-release/semantic-release/blob/971a5e0d16f1a32e117e9ce382a1618c8256d0d9/lib/get-config.js#L56} for about default config.
*/
const types = require('./commit-types.config')
/**
* GitHubのデフォルトブランチ
*/
const defaultBranch = 'release'
/**
* changelogを書き出すファイル名
*/
const changelogFile = 'CHANGELOG.md'
module.exports = {
/**
* リリース対象となるGitブランチ
*
* @see https://semantic-release.gitbook.io/semantic-release/usage/workflow-configuration
*/
branches: [defaultBranch, { name: "beta", prerelease: true }],
/**
* Gitタグのフォーマット。Lodashのテンプレートが使えます。
* multi-semantic-releaseを使った場合は、この設定は無視されます。
*/
tagFormat: 'v${version}',
/**
* 実行するプラグイン
*/
plugins: [
/**
* conventional-changelogでコミットを解析します。
* @see https://github.com/semantic-release/commit-analyzer
*/
[
'@semantic-release/commit-analyzer',
{
preset: 'conventionalcommits',
releaseRules: [
{ breaking: true, release: 'major' },
{ revert: true, release: 'patch' },
...types.flatMap(({ type, release }) => (release ? [{ type, release }] : [])),
],
},
],
/**
* conventional-changelogでchangelogコンテンツを生成します。
* @see https://github.com/semantic-release/release-notes-generator
*/
[
'@semantic-release/release-notes-generator',
{
preset: 'conventionalcommits',
presetConfig: {
types: types.map(({ type, section, hidden }) => ({
type,
section,
hidden: hidden ?? true,
})),
},
},
],
/**
* changelogコンテンツをもとにchangelogFileを生成します。
* @see https://github.com/semantic-release/changelog
*/
[
'@semantic-release/changelog',
{
changelogFile,
changelogTitle:
'# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/) and this project adheres to [Semantic Versioning](https://semver.org/).\n\n## [Released](https://github.com/dc7290/next-export-optimize-images/releases)',
},
],
/**
* package.jsonのバージョンを更新したり、npmパッケージを公開します。
* @see https://github.com/semantic-release/npm
*/
[
'@semantic-release/npm',
{
// npmに公開するかどうか
npmPublish: true,
},
],
/**
* リリース時に生成したアセットをGitリポジトリにコミットします。
* @see https://github.com/semantic-release/git
*/
[
'@semantic-release/git',
{
// コミット対象のファイル
assets: [
'package.json', // versionフィールドの変更をコミットするため
'yarn.lock', // versionフィールドの変更をコミットするため
changelogFile, // changelogFileの変更をコミットするため
],
// コミットメッセージ
message: 'release: 🏹 ${nextRelease.gitTag} [skip ci]\n\n${nextRelease.notes}',
},
],
/**
* GitHub releaseを公開し、リリースされたプルリクエストやissueにコメントを残します。assetsをreleasesにアップロードすることもできます。
* @see https://github.com/semantic-release/github
*/
[
'@semantic-release/github',
{
// 関連するissueやPRにつけるラベル
releasedLabels: ['released', 'released-in-${nextRelease.gitTag}'],
// 関連するissueやPRに残すコメント
successComment:
"🎉 This ${issue.pull_request ? 'pull request' : 'issue'} is included in version ${nextRelease.gitTag}.",
},
],
],
}