UNPKG

@r4lrgx/shared-config

Version:

🔩 My customized Config of semantic release and commitlint and others.

193 lines (179 loc) • 6.75 kB
import dedent from 'dedent'; // @r4lrgx/shared-config v1.0.6 // MIT License // src/release-config/plugins/analyzer.ts var commitAnalyzerPlugin = (options = {}) => { options = Object.fromEntries(Object.entries(options).filter(([_, v]) => v !== void 0)); const { releaseRules, config, ...customized } = options; return [ "@semantic-release/commit-analyzer", { // version:1.0.0:major.minor.patch:2.0.0:1.1.0:1.0.1 releaseRules: releaseRules ?? [ { breaking: true, release: "major" }, { type: "feat", release: "minor" }, { type: "feat", scope: "int-*", release: false }, { type: "fix", release: "patch" }, { type: "fix", scope: "int-*", release: false }, { type: "perf", release: "patch" }, { type: "perf", scope: "int-*", release: false }, { type: "refactor", release: "patch" }, { type: "refactor", scope: "int-*", release: false }, { type: "chore", release: "patch" }, { type: "chore", scope: "int-*", release: false }, { type: "chore", scope: "deps", release: "patch" }, { type: "docs", release: "patch" }, { type: "docs", scope: "int-*", release: false }, { type: "build", release: "patch" }, { type: "ci", release: false }, { type: "test", release: false }, { type: "style", release: false }, { type: "wip", release: false }, { type: "revert", release: false } ], config: config ?? "@r4lrgx/gitmoji/changelog-config", ...customized } ]; }; var changelogPlugin = (options = {}) => { options = Object.fromEntries(Object.entries(options).filter(([_, v]) => v !== void 0)); const { changelogFile, changelogTitle } = options; const defaultChangelogTitle = dedent(` <a name="changelog-top"></a> <div align="center"> <h1>\u{1F4C5} Changelog</h1> <p>\u{1F50E} Version History & Release Tracking.</p> </div> > [!IMPORTANT] > **Maintenance Policy** > Only the latest stable version receives active support. > Security patches are backported for 6 months after new major releases. > [!WARNING] > **Breaking Changes Protocol** > Major version updates (X.0.0) may contain backward-incompatible changes. > Always check the migration guide before upgrading. > [!NOTE] > **Changelog Standards** > This document follows [Keep a Changelog](https://keepachangelog.com/) conventions --- `); return [ "@semantic-release/changelog", { changelogFile: changelogFile ?? "CHANGELOG.md", changelogTitle: changelogTitle ?? defaultChangelogTitle } ]; }; // src/release-config/plugins/exec.ts var execPlugin = (options = {}) => { options = Object.fromEntries(Object.entries(options).filter(([_, v]) => v !== void 0)); const { prepareCmd, publishCmd, successCmd, failCmd, ...customized } = options; return [ "@semantic-release/exec", { prepareCmd: prepareCmd ?? 'echo "\u{1F4E6} Preparing release ${nextRelease.tag} v${nextRelease.version}"', publishCmd: publishCmd ?? 'echo "\u{1F680} Publishing release ${nextRelease.tag} v${nextRelease.version}"', successCmd: successCmd ?? 'echo "\u2705 Release ${nextRelease.tag} v${nextRelease.version} published successfully!"', failCmd: failCmd ?? 'echo "\u{1F6D1} Failed to publish release ${nextRelease.tag} v${nextRelease.version}"', ...customized } ]; }; // src/release-config/plugins/git.ts var gitPlugin = (options = {}) => { options = Object.fromEntries(Object.entries(options).filter(([_, v]) => v !== void 0)); const { assets, message } = options; const defaultAssets = ["CHANGELOG.md", "package.json", "pnpm-lock.yaml"]; const resolveAssets = () => { if (typeof assets === "boolean") return false; if (typeof assets === "string") return [assets]; if (Array.isArray(assets)) return [...assets, ...defaultAssets].filter(Boolean); return defaultAssets; }; return [ "@semantic-release/git", { assets: resolveAssets(), message: message ?? [ // biome "\u267B\uFE0F chore(RELEASE): ${nextRelease.tag} v${nextRelease.version} [skip ci]\n", "\u{1F4DD} Release Notes:\n${nextRelease.notes}" ].join("\n") } ]; }; // src/release-config/plugins/github.ts var githubPlugin = (options = {}) => { options = Object.fromEntries(Object.entries(options).filter(([_, v]) => v !== void 0)); const { successComment, failComment, releasedLabels, addReleases, assets, ...customized } = options; return [ "@semantic-release/github", { successComment: successComment ?? [ // biome "\u{1F680} Successfully released **v${nextRelease.version}** `(${nextRelease.tag})`! \u{1F389}", "\u{1F517} [View release details](${nextRelease.url})\n", "Thanks for contributing to the project! \u{1F64C}" ].join("\n"), failComment: failComment ?? [ // biome "\u274C Uh-oh! Failed to release **v${nextRelease.version}** `(${nextRelease.tag})`.", "\u{1F4C4} Check logs or CI output for more info.\n", "We're on it like a debugger on a stack trace. \u{1F41B}" ].join("\n"), releasedLabels: releasedLabels ?? [ // biome 'released<%= nextRelease.channel ? `-${nextRelease.channel}` : "" %>' ], addReleases: addReleases ?? "bottom", assets: [ ...assets ?? [], { path: "CHANGELOG.md", name: "CHANGELOG", label: "Changelog" }, { path: "README.md", name: "README", label: "Readme" }, { path: "license.md", name: "license", label: "License" } ].filter(Boolean), ...customized } ]; }; // src/release-config/plugins/notes.ts var releaseNotesGeneratorPlugin = (options = {}) => { options = Object.fromEntries(Object.entries(options).filter(([_, v]) => v !== void 0)); const { config, ...customized } = options; return [ "@semantic-release/release-notes-generator", { config: config ?? "@r4lrgx/gitmoji/changelog-config", ...customized } ]; }; // src/release-config/plugins/npm.ts var npmPlugin = (options = {}) => { options = Object.fromEntries(Object.entries(options).filter(([_, v]) => v !== void 0)); const { npmPublish, ...customized } = options; return [ "@semantic-release/npm", { npmPublish: npmPublish ?? false, ...customized } ]; }; export { changelogPlugin, commitAnalyzerPlugin, execPlugin, gitPlugin, githubPlugin, npmPlugin, releaseNotesGeneratorPlugin }; //# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map