Files
xgj/release-web/.release-it.js

129 lines
3.3 KiB
JavaScript

const version = '${version}';
const isRelease = process.argv.includes('--release');
const preRelease = process.argv.find(arg => arg.startsWith('--preRelease='));
const preReleaseName = preRelease ? (preRelease.split('=')[1]) : '';
// const tagMatchOpts = isRelease ? {} : { tagMatch: `v[0-9]*.[0-9]*.[0-9]*-${preReleaseName}.[0-9]*` };
const tagMatchOpts = isRelease ? { tagExclude: `*[-]*` } : {};
console.log(`Release(${isRelease ? true : preReleaseName}): `, process.argv.join(' '));
console.log(`TagMatch: ${tagMatchOpts}`);
module.exports = {
plugins: {
'@release-it/conventional-changelog': {
infile: `CHANGELOG${isRelease ? '' : '-' + preReleaseName.toUpperCase()}.md`,
preset: {
name: "conventionalcommits",
types: [
{
type: "feat",
section: "新特性",
},
{
type: "fix",
section: "修复BUG",
},
{
type: "perf",
section: "性能优化",
},
{
type: "revert",
section: "回滚",
},
{
type: "docs",
section: "文档",
},
{
type: "style",
section: "代码格式",
},
{
type: "refactor",
section: "重构",
},
{
type: "test",
section: "测试",
},
{
type: "build",
section: "构建",
},
{
type: "ci",
section: "CI",
},
{
type: "chore",
section: "其他",
},
],
},
},
'release-it-gitea': {
releaseTitle: "🎉 v${version}",
releaseNotes: (t) => {
const lines = t.changelog.split('\n');
const cateLines = lines.filter(line => line.startsWith('###') || line.startsWith('* '));
const cateMap = {};
let currentCate = '';
cateLines.forEach(line => {
if (line.startsWith('###')) {
currentCate = line;
cateMap[currentCate] = cateMap[currentCate] || [];
} else {
cateMap[currentCate].push(line);
}
});
return Object.entries(cateMap).map(([cate, lines]) => {
return `${cate}\n\n${lines.map(line => `${line}`).join('\n')}\n`;
}).join('\n');
},
assets: [
{
"path": "dist/**/*.map",
"name": "sourcemap.zip",
"type": "zip"
}
]
}
},
git: {
push: true,
tagName: `v${version}`,
commitsPath: '.',
commitMessage: `chore: released version v${version} [no ci]`,
requireCommits: false,
requireCommitsFail: false,
getLatestTagFromAllRefs: true,
requireBranch: ['main', 'dev'],
...tagMatchOpts,
},
npm: {
publish: false,
ignoreVersion: true,
tag: preReleaseName ? preReleaseName : 'latest',
versionArgs: ['--workspaces false'],
},
github: {
release: false,
releaseName: `Release v${version}`,
autoGenerate: true,
skipChecks: true,
host: 'git.bjxgj.com'
},
hooks: {
'before:release': [
`echo '\${version}' > /tmp/last-version`,
'git add --all',
'npm run build'
],
}
};