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
| parserOpts = { mergePattern: /^Merge pull request #(\d+) from (.*)$/, mergeCorrespondence: ['id', 'source'], }
customTransform = (commit, context) => { const issues = [] commit.notes.forEach((note) => { note.title = `BREAKING CHANGES` }) if (commit.type === `feat`) { commit.type = `✨ Features` } else if (commit.type === `fix`) { commit.type = `🐞 Bug Fixes` } else if (commit.type === `perf`) { commit.type = `🎈 Performance Improvements` } else if (commit.type === `revert`) { commit.type = `Reverts` } else if (commit.type === `docs`) { commit.type = `📃 Documentation` } else if (commit.type === `style`) { commit.type = `🌈 Styles` } else if (commit.type === `refactor`) { commit.type = `🦄 Code Refactoring` } else if (commit.type === `test`) { commit.type = `🧪 Tests` } else if (commit.type === `build`) { commit.type = `🔧 Build System` } else if (commit.type === `ci`) { commit.type = `🐎 Continuous Integration` } else { return } if (commit.scope === `*`) { commit.scope = `` } if (typeof commit.hash === `string`) { commit.shortHash = commit.hash.substring(0, 7) } if (typeof commit.subject === `string`) { commit.subject = commit.subject.substring(2) let url = context.repository ? `${context.host}/${context.owner}/${context.repository}` : context.repoUrl if (url) { url = `${url}/issues/` commit.subject = commit.subject.replace(/#([0-9]+)/g, (_, issue) => { issues.push(issue) return `[#${issue}](${url}${issue})` }) } if (context.host) { commit.subject = commit.subject.replace( /\B@([a-z0-9](?:-?[a-z0-9/]){0,38})/g, (_, username) => { if (username.includes('/')) { return `@${username}` } return `[@${username}](${context.host}/${username})` } ) } commit.subject = `${commit.subject} (by @${commit.committer.name})` } commit.references = commit.references.filter((reference) => { if (issues.indexOf(reference.issue) === -1) { return true } return false }) return commit } module.exports = { branches: 'master', parserOpts, writerOpts: { transform: customTransform }, plugins: [ [ '@semantic-release/commit-analyzer', { preset: 'angular', releaseRules: [ { type: 'docs', scope: 'README', release: 'patch' }, { type: 'refactor', release: 'patch' }, { type: 'style', release: 'patch' }, { type: 'test', release: 'patch' }, { type: 'build', release: 'patch' }, { type: 'ci', release: 'patch' }, ], }, ], '@semantic-release/release-notes-generator', ['@semantic-release/changelog', { changelogFile: 'CHANGELOG.md' }], '@semantic-release/npm', [ '@semantic-release/git', { assets: ['package.json', 'CHANGELOG.md'], }, ], [ '@semantic-release/gitlab', { gitlabUrl: 'http://git.example.com', assets: [], }, ], ], }
|