Repository navigation
v1.0.0
1.0.0 (2026-05-30)
breaking
- legacy authentication using
NPM_USERNAMEandNPM_PASSWORDis no longer supported. UseNPM_TOKENinstead. (15092ad)
Bug Fixes
- Accept
undefinedvalues for thegetLastReleaseandgenerateNotesplugins (d7b323d) - adapt for semver to version 7.3.2 (0363790)
- adapt for semver to version 7.3.2 (part II) (#1530) (431d571)
- add
channelto publish success log (5744c5e) - add
cwdtoENOGITREPOerror message (9930dac) - add
repositoryUrlin logs (55be0ba) - add a flag indicate which branch is the main one (2caafba)
- add clarification in EGITNOPERMISSION error message (a72d8f5)
- add debug log for
git fetchcommand (4abda31) - add debug logs for config file path (3c8177a)
- add debug logs for plugins resolved options (6d0bd8c)
- Add helpful detail to
ERELEASEBRANCHESerror message (#1188) (37bcc9e) - add logging for top-level errors (#1736) (9f57b84)
- add logging for when ssh falls back to http (#1639) (b4c5d0a)
- add trailing
.gittorepositoryUrlonly if it's present in the configured URL (cb1f80c) - allow boolean option to be set in config file (857d418)
- allow empty release notes in dry-run mode (5847514)
- allow multiple branches with same channel (63f51ae)
- allow to set
cioption via API and config file (2faff26) - allow to set
cioption via API and config file (862ec4c) - also hide sensitive info when loggin from
cli.js(43d0646) - Always pass pluginConfig to plugins as a defined object (8e9d9f7)
- always transform
git+httpsurl tohttps(cbf5785) - bin: addapt build leader error to new leader detection algorithm (33dfcff)
- branch-naming: prevent non-range versions from being identified as maintenance branches (07f2672)
- bump @semantic-release/commit-analyzer to 9.0.2 (#2258) (7f971f3)
- bump
@semantic-release/commit-analyzertov10.0.0-beta.1(4a6b31f) - bump
@semantic-release/githubto9.0.0-beta.2(#2818) (6f19d77) - bump minimal version of lodash to address
CVE-2021-23337(#1931) (55194c1) - call
getTagHeadonly when necessary (de77a79) - call
successplugin only once for releases added to a channel (9a023b4) - Check SemanticReleaseError by error.semanticRelease property (65d344b)
- clarify
EPLUGINCONFerror message (d8c84a0) - clarify message for EGITNOPERMISSION error (79d22a2)
- clearer logput (7b8f632)
- cli: fix typo in log message (d9b9594)
- cli: only write npmrc when necessary (caf09c9)
- commits: add helpful error when lastRelease not in history (5cc7da6), closes #61 #50
- commits: handle failing git command correctly and show meaningful error (cb39925), closes #83
- commits: Use
--no-colorforgit branch-command (f239f2f) - condition-travis: remove need for python script travis_after_all (4aa9088)
- convert
git+httpsURL in package.json tohttps(b0b4fc8) - correct
git merge-baseerror code handling (4352144) - correct error when remote repository has no branches (c6b1076)
- correct log when adding channel to tag (61665be)
- corrected spelling of invalid plugin config error (#1979) (80e1665)
- correctly determine next pre-release version (0457a07)
- correctly determine release to add to a channel (aec96c7)
- correctly display command that errored out in logs (fc7205d)
- correctly handle skipped releases (1243f79)
- correctly handle skipped releases (89663d3)
- correctly obfuscate githubToken with verbose loglevel (b47311d)
- correctly resolve plugins installed globally with
npx(eafbb34) - debug log all options (7e785fa)
- deps: bump
@semantic-release/npmto^10.0.0-beta.1(#2670) (6a83cb5) - deps: peer dependecy error with
marked-terminal(#1829) (07f12b9) - deps: raise the minimum of the defined range for
marked-terminal(#3742) (fb1ccd4) - deps: remove deprecated semver-diff (#3980) (f404124)
- deps: rename read-pkg-up -> read-package-up (4980cba)
- deps: rename read-pkg-up -> read-package-up (#3249) (95a8b9e)
- deps: Require find-versions ^4.0.0 (#1722) (52238cb)
- deps: update @semantic-release/npm to ^12.0.2 (#3791) (93177d0)
- deps: update
@semantic-release/githubtov11.0.0(#3460) (43df51b) - deps: update dependency @semantic-release/commit-analyzer to v12 (#3226) (29458a0)
- deps: update dependency @semantic-release/error to v4 (d259350)
- deps: update dependency @semantic-release/github to v10 (#3222) (96d5aeb)
- deps: update dependency @semantic-release/npm to v12 (#3224) (7a50c8a)
- deps: update dependency @semantic-release/release-notes-generator to v11 (#2778) (ac40804)
- deps: update dependency @semantic-release/release-notes-generator to v13 (#3237) (b7e08fc)
- deps: update dependency aggregate-error to v5 (#2956) (1017e1a)
- deps: update dependency cosmiconfig to v7 (#1742) (cc74a4c)
- deps: update dependency cosmiconfig to v8 (f914c1e)
- deps: update dependency cosmiconfig to v8.1.2 (fbede54)
- deps: update dependency cosmiconfig to v9 (b38cd2e)
- deps: update dependency cosmiconfig to v9 (#3072) (8b0dbd2)
- deps: update dependency cosmiconfig to v9 (#3105) (07dde04)
- deps: update dependency env-ci to v10 (#2983) (e759493)
- deps: update dependency env-ci to v9 (#2757) (4bddb37)
- deps: update dependency execa to v5 (#1745) (8262832)
- deps: update dependency execa to v7 (#2709) (31d9bfe)
- deps: update dependency execa to v7.1.1 (c38b53a)
- deps: update dependency execa to v8 (#2914) (7bc21fc)
- deps: update dependency execa to v9 (#3296) (73bcd0b)
- deps: update dependency figures to v6 (#3033) (305674d)
- deps: update dependency find-versions to v6 (6a2b6bb)
- deps: update dependency get-stream to v6 (#1748) (969e460)
- deps: update dependency hook-std to v4 (#3859) (67abe56)
- deps: update dependency hosted-git-info to v4 (#1838) (44b3344)
- deps: update dependency hosted-git-info to v6 (c4da008)
- deps: update dependency hosted-git-info to v7 (#2908) (eba86ac)
- deps: update dependency hosted-git-info to v8 (#3436) (ab10ac1)
- deps: update dependency hosted-git-info to v9 (9fa04f8)
- deps: update dependency import-from-esm to v2 (#3556) (f15019c)
- deps: update dependency marked to v11 (#3079) (6d2a6f1)
- deps: update dependency marked to v12 (#3176) (38105f5)
- deps: update dependency marked to v15 (#3499) (e45040e)
- deps: update dependency marked to v2 (a2eaed0)
- deps: update dependency marked to v3 (6e4beb8)
- deps: update dependency marked to v5 (452e1fa)
- deps: update dependency marked to v9 (#2947) (84f2ee9)
- deps: update dependency marked-terminal to v6 (8a7befe)
- deps: update dependency marked-terminal to v7 (9faded8)
- deps: update dependency read-package-up to v12 (#3935) (1494cb9)
- deps: update dependency read-pkg-up to v10 (#2862) (70996e0)
- deps: update dependency read-pkg-up to v11 (#3047) (f09e55f)
- deps: update dependency semver-diff to v4 (#1915) (cb45d27)
- deps: update dependency semver-diff to v5 (#3867) (a834948)
- deps: update dependency yargs to v17 (#1912) (f419080)
- deps: update dependency yargs to v18 (#3745) (cde9a72)
- deps: update to latest npm plugin (a96aced)
- deps: update to the beta of the npm plugin (c770748), closes semantic-release/npm#958
- deps: update to the latest alpha of the npm plugin (7c39330), closes semantic-release/npm#958
- deps: update to the latest alpha of the npm plugin (2434041), closes semantic-release/npm#958
- deps: update to the latest alpha of the npm plugin (a3c1129)
- deps: update to the stable version of the github plugin (f12cf81)
- deps: update to the stable version of the npm plugin to add trusted publishing support (fad173e), closes semantic-release/npm#958
- deps: update to the stable version of the release-notes-generator plugin (d9def72)
- deps: update to yargs 16.2.0 (#1739) (d2ec893)
- deps: updated the beta plugins to stable versions (3941018)
- deps: updated to latest alpha of the npm plugin (ea56799)
- deps: updated to the latest beta of the commit analyzer plugin (03a687b)
- deps: updated to the latest beta of the npm plugin (5d1e5a0)
- deps: updated to the latest beta of the npm plugin, which updates npm to v9 (bef1d48)
- deps: updated to the latest betas of the commit-analyzer and release-notes-generator plugins (de8e4e0)
- deps: updated to the latest version of the npm plugin (d647433)
- deps: updated to the stable version of the commit-analyzer plugin (291533b)
- deps: upgrade to the beta of the github plugin (b56bddf)
- deps: upgrade to the beta of the npm plugin (1600e35)
- deps: upgrade to the latest alpha of the npm plugin (e4ff786), closes semantic-release/npm#958
- deps: upgrade to the new major version of the npm plugin (1be8290)
- deps: upgraded
release-notes-generatorandcommit-analyzerplugins to stable versions (041e4f7), closes #2934 - deps: upgraded to the beta of the commit-analyzer plugin (dfc3d91)
- deps: upgraded to the beta of the release-notes-generator plugin (4a4cd92)
- deps: upgraded to the latest version of env-ci (0d0ed9d)
- deps: upgraded to the latest version of the npm plugin with npm v10 (a23b718)
- deps: use the alpha of the npm plugin (ce3618e), closes semantic-release/npm#958
- display erroring git commands properly (1edae67)
- do not call
addChannelfor 2 merged branches configured with the same channel (4aad9cd) - do not clone
stdout/stderrpassed to pugins (63d422e) - do not create tags in dry-run mode for released to add to a channel (97748c5)
- do not hide env variable value if shorter than 5 (b082a2e)
- do not log outated branch error for missing permission cases (0578c8b)
- do not override env variable with default if defined (3fb3fa8)
- do not set
pathto plugin config defined as a Function or an Array (f93eeb7) - do not transform repositoryUrl if it allow to push (305f4ee)
- do not underline log messages (c86518a)
- docs: remove unnecessary backticks in readme (a4951b7)
- don't parse port as part of the path in repository URLs (#1671) (77a75f0)
- engines: fixed defined node version to account for the higher requirement from the npm plugin (#2088) (ea52e17)
- env-ci: updated to the stable esm-only version (#2632) (918eb59)
- escape uri encoded symbols (#1697) (f8f8fbc)
- exclude empty env var value from replacement (20246c0)
- exclude prereleases from version retrived by
getLastRelease(e4618a2) - Exit with 1 if unexpected error happens (90417c6)
- exports: removed the
exportsdefinition for the time being (561e2d6), closes #2968 - fetch all release branches on CI (b729183)
- fetch all tags even if the repo is not shallow (45eee4a)
- fetch tags on repo cached by the CI (6b5b02e)
- fix
EPLUGINCONFerror details (9dd127b) - fix Bitbucket authenticated URL (e88ac63)
- fix branch type regexp to handle version with multiple digits (52ca0b3)
- fix logs for plugins loaded with
pluginsoption (58c25be) - fix maintenance branch regex (a022996)
- fix range regexp to handle version with multiple digits (9a04e64)
- fix the
--no-ciarg parsing (0d2d1f2) - get correct version if prerelease branch shares version with ... (#2416) (e4229f9)
- get-git-auth-url.js: Added debug for success (#3595) (2616d93)
- gitlog: increase maxBuffer (a5cb9ea), closes #286
- handle branch properties set to
false(751a5f1) - handle case with no last release in history (51e340f)
- handle errors when verifyConditions and verifyRelease are a pipeline (b0bc490)
- harmonize parameters passed to
getError(f96c660) - hide sensitive data in relesae notes and
fail/successplugin params (dffe148) - hide sensitive info for
Bufferandundefined(8b3605d) - ignore custom port when converting ssh repo URL to https (4af8548)
- ignore lasst release only if pre-release on the same channel as current branch (990e85f)
- Include Error properties in logs (c90765e)
- include release notes in JS API result for dry mode (3411520)
- increase next version on prerelease branch based on highest commit type (9ecc7a3)
- indicate in logs if running in dry-run mode (e92c84e)
- last-release: encode scoped packages (76d9e3d)
- last-release: normalized registry url (af15fb4)
- log all core verification errors (faabffb)
- log current version of semantic-release (f92677b)
- Log error messages on reject (f6aacd2)
- log plugin type in addition of path (4053d8f)
- log-repo: use the original form of the repo url to remove the need to mask credentials (#2459) (58a226f), closes #2449
- look also for previous prerelease versions to determine the next one (9772563)
- marked: reverted upgrade to v3 (#2087) (5edff69)
- mask secrets when characters get uri encoded (ca90b34)
- match tag to
tagFormatfrom the begining of the string (31ad231) - modify fetch function to handle CircleCI specifics (cbef9d1)
- normalize ci: false into noCi: true after configs get merged (#1732) thanks @dominykas (21c151f)
- npm-plugin: upgraded to the beta, which upgrades npm to v8 (f634b8c)
- npm-plugin: upgraded to the latest beta version (8097afb)
- npm-plugin: upgraded to the stable version (0eca144)
- on maintenance branch add to channel only version >= to start range (c22ae17)
- only ever change version field in published package.json (bca89a5), closes #203
- pacjage: update
@semantic-release/githuband@semantic-release/npm(d55fda3) - package: @semantic-release/condition-travis@6.0.0 (12b3539)
- package: fix version ranges for engines to include specified versions (fb1aa80)
- package: Remove commander.js dependency (#704) (c84ac15)
- package: remove dependency bundling (55364de)
- package: Set minimum node version to 4 (#442) (9951cf7)
- package: update @semantic-release/commit-analyzer to version 3.0.1 (8c44c31)
- package: update @semantic-release/commit-analyzer to version 4.0.0 (186950a)
- package: update @semantic-release/commit-analyzer to version 7.0.0-beta.2 (725780b)
- package: update @semantic-release/commit-analyzer to version 8.0.0 (45695b9)
- package: update @semantic-release/error to version 2.0.0 (3a4334f)
- package: update @semantic-release/github to version 3.0.0 (d28b7e3)
- package: update @semantic-release/github to version 4.0.2 (af8c830)
- package: update @semantic-release/github to version 5.3.0-beta.5 (c1c96a8)
- package: update @semantic-release/github to version 5.6.0-beta.1 (6053b89)
- package: update @semantic-release/github to version 7.0.0 (c48bd3a)
- package: update @semantic-release/last-release-npm to version 2.0.0 (2d14c53)
- package: update @semantic-release/npm to version 5.0.1 (efb4000), closes #882
- package: update @semantic-release/npm to version 5.2.0-beta.3 (390e966)
- package: update @semantic-release/npm to version 6.0.0-beta.3 (65c4122)
- package: update @semantic-release/npm to version 7.0.0 (f2b5826)
- package: update @semantic-release/release-notes-generator to version 3.0.1 (1fa6d50)
- package: update @semantic-release/release-notes-generator to version 4.0.0 (dd60b46)
- package: update @semantic-release/release-notes-generator to version 5.0.0 (8a1dd7b)
- package: update @semantic-release/release-notes-generator to version 9.0.0 (3c7b114)
- package: update
@semantic-release/github(9a30f35) - package: update
@semantic-release/npmand@semantic-release/github(d6731b9) - package: update aggregate-error to version 2.0.0 (5d6fd7c)
- package: update aggregate-error to version 2.0.0 (1aefd98)
- package: update aggregate-error to version 3.0.0 (06fe435)
- package: update cosmiconfig to version 4.0.0 (51c02b9)
- package: update cosmiconfig to version 5.0.0 (349b2e8)
- package: update cosmiconfig to version 6.0.0 (ffff100)
- package: update debug to version 4.0.0 (7b8cd99)
- package: update dependency lodash to address security warnings (#1253) (9a8a36c)
- package: update env-ci to version 2.0.0 (b9bd650)
- package: update env-ci to version 3.0.0 (b9ae7d2)
- package: update env-ci to version 4.0.0 (8051294)
- package: update env-ci to version 5.0.0 (3739ab5)
- package: update execa to version 0.10.0 (f13ec6a)
- package: update execa to version 0.11.0 (edd8bc2)
- package: update execa to version 0.9.0 (93173e2)
- package: update execa to version 1.0.0 (1aed97e)
- package: update execa to version 2.0.0 (52c48be)
- package: update execa to version 3.0.0 (9537927)
- package: update execa to version 3.2.0 (1693073)
- package: update figures to version 3.0.0 (f4cf7c8)
- package: update find-versions to version 3.0.0 (669c9ed)
- package: update get-stream to version 4.0.0 (e882096)
- package: update get-stream to version 5.0.0 (0a584de)
- package: update git-url-parse to version 10.0.1 (d3c7232)
- package: update git-url-parse to version 8.1.0 (2edd9da)
- package: update git-url-parse to version 8.3.1 (02746aa)
- package: update git-url-parse to version 9.0.0 (7c9ec41)
- package: update github to version 12.0.0 (16a02e5)
- package: update github to version 7.0.0 (3295f95)
- package: update github to version 8.0.0 (afd6ab7)
- package: update hook-std to version 1.0.0 (29e7ebf)
- package: update hook-std to version 2.0.0 (db3fc3e)
- package: update hosted-git-info to version 2.7.1 (0862480)
- package: update hosted-git-info to version 3.0.0 (391af98)
- package: update lodash to version 4.17.4 (fa2ca8a)
- package: update marked to version 0.4.0 (a387c04)
- package: update marked to version 0.5.0 (2f4befe)
- package: update marked to version 0.6.0 (d0891bf)
- package: update marked to version 0.6.0 (b7aeaba)
- package: update marked to version 0.7.0 (75f0830)
- package: update marked to version 1.0.0 (#1534) (d64db31)
- package: update marked-terminal to version 3.0.0 (cd8ff5d)
- package: update marked-terminal to version 4.0.0 (8ce2d6e)
- package: update micromatch to version 3.1.10 (e5344cd)
- package: update micromatch to version 4.0.2 (5618641)
- package: update nopt to version 4.0.0 (b10c891)
- package: update p-each-series to version 2.1.0 (2c655b2)
- package: update p-locate to version 3.0.0 (0ab0426)
- package: update p-locate to version 4.0.0 (a5babc6)
- package: update p-reduce to version 2.0.0 (30723c5)
- package: update read-pkg-up to version 4.0.0 (9137f85)
- package: update read-pkg-up to version 5.0.0 (a90a103)
- package: update read-pkg-up to version 6.0.0 (74103ab)
- package: update read-pkg-up to version 7.0.0 (0e24022)
- package: update resolve-from to version 5.0.0 (6f3c21a)
- package: update semver to version 6.0.0 (d61e3bc)
- package: update semver-diff to version 3.1.1 (581998c)
- package: update yargs to version 12.0.0 (d4f68a5)
- package: update yargs to version 13.1.0 (aed4ea2)
- package: update yargs to version 14.0.0 (3c2fe35)
- package: update yargs to version 15.0.1 (2c13136)
- package: use correct condition-travis version (ef872e3)
- pass a branch name to
getGitAuthUrl(e7bede1) - pass custom
envandcwdtoenv-ci(540d4fa) - pin initial branch to master (#1740) (32a2c91)
- plugin-load: clarify load message (6a36832), closes #811
- plugins: pass right path to generateNotes (e1d5da5)
- plugins: rename plugins (150273c)
- plugins: require user plugins relative to the cwd (43c8df0)
- plugins: typo in plugin name (8892ec7)
- post: Create a tag before makeing a release (3f85597)
- post: create git tag properly (0c79a9b)
- post: fix target_commitish to be the default branch (f148a61)
- prefix git auth with "x-access-token:" when run in a GitHub Action (038e640)
- prevent false positive secret replacement for Golang projects (#1562) (eed1d3c)
- prevent git CLI to prompt user/password on CI (7c48afa)
- prevent git prompt before permissions verification (30ee231)
- prioritize
GIT_CREDENTIALSfor gtit credentials (467635b) - push only tags to remote repo (2b082ac)
- registry: be better at using the correct registry (relevant for npme) (4513781), closes #53
- remove
execatimeout (3c46455) - remove
namefrom log as it's not an existing option anymore (fcb832b) - remove confusing logs when searching for releases to add to a channel (162b4b9)
- remove debugging
console.error(3d5db1f) - remove dependency to
git-url-parse(a99355e) - remove hack to workaround GitHub Rebase & Merge (844e0b0)
- remove redundant log (728ea34)
- remove support for node < 8 (f534c57)
- remove the github plugin from default success and fail hooks (04f3061)
- remove unecessary
console.log(e5a73d8) - remove unnecessary
await(9a1af4d) - remove unnecessary
branchparameter frompushfunction (968b996) - remove unnecessary
branchparameter frompushfunction (ffe1062) - rename default branch (7a9922a)
- rename the
--repositoryUrlCLI option to--repository-url(cb36dd4) - repositoryUrl: on beta repositoryUrl needs auth for pre-release flows (#1186) (3610422)
- require Node.js >=8.16 (2f3d934)
- Revert "fix(deps): update dependency cosmiconfig to v9" (#3104) (f6f1bf1)
- revert to the correct refspec in fetch function (9948a74)
- revert updating cosmiconfig to v9 (88efead)
- secrets-masking: used the proper named import from hook-std to enable masking for stderr (#2619) (cf6befa)
- security: Updated marked dependency (f4d9ebe)
- set default path to
generateNotesobject config (d8e59cc) - set node minimum version to 8.3 (cc0c312)
- set repository authentication when
repositoryUrlis set as an option (ce1e74f) - simplify
get-tagsalgorithm (00420a8) - support multiple generate-notes plugin in CLI arg (4f75cb3)
- support windows absolute extends (#3062) (0d06f62)
- throws error if the commit associated with a tag cannot be found (1317348)
- types: fixed typescript definition (0e08b5c), closes #3601
- types: included the definitions file in the published package (#2920) (4c95c97)
- typo in
EPLUGINCONFerror message (bc8551c) - Typo in error messages (613a646)
- unshallow repository with credentials (45d7e6f)
- update link to GitLab CI introduction (#1794) (a9be97b)
- update plugin versions (0785a84)
- update plugins dependencies (9890584)
- update plugins dependencies (73f0c77)
- upgrade
markedto resolve ReDos vulnerability (#2330) (d9e5bc0) - use
--no-verifywhen testing the Git permissions (b54b20d) - use
git ls-remoteto verify if the remote branch is ahead (2b6378f) - use
git rev-parse origin/${branch}to verify origin head (d7081fa) - use authenticated URL to check if local branch is up to date (7a939a8)
- use correct ci branch context (#1521) (0f0c650)
- use correct debug namespace (6f74dcb)
- Use default plugin if the path property is missing from a single plugin configuration (d4c7605)
- use long option to delete tag in git push (d820823)
- use module name in logs for plugins loaded with
pluginsoption (ff275a5) - use one note reference per tag to prevent conflicts (#2085) (020ea7d)
- use spawn instead of exec for 'git log' to avoid maxBuffer err (73138f8)
- use travis-deploy-once to reenable travis-pro support (2be6e5d)
- use unauthenticated URL to check if branch is up to date (071dcce)
- use valid git credentials when multiple are provided (#1669) (2bf3771)
- verify branch first (1966f0e)
- verify is branch is up to date by comparing remote and local HEAD (a8747c4)
- verify the local branch is up to date with the remote one (d15905c)
- verify: ensure repo url in package.json is well formed (431babb)
- windows: fixed issues preventing execution from windows (#2672) (5df624c)
- write version to shrinkwrap if existent (a7270bb), closes #11
chore
- require Node.js >=10.18 (bec57cd)
Code Refactoring
- use one config object instead of passing arguments to plugins on their own (d9eeb3f)
Documentation
- breaking change (ef16232)
Features
- add
successandfailnotification plugins (49f5e70) - add
tagFormatoption to customize Git tag name (39536fa) - add
warntype to globalcontext.logger(#3423) (bcc663c) - add debug logs for git commands (687435b)
- add fallbackTag functionality and map "next" to "latest" (7a4c89f)
- add logs about
prepare,publish,successandfailplugins skipped in dry-run mode (90da6a0) - add main branch to default release branch config (#1737) (95d8736)
- add new
pluginsoption (5ba5010) - add support for Bitbucket token in environment variables (c93775c)
- add support for git version 2.0.0 (47c73eb)
- add the
prepareplugin hook (c2beb64) - Added TypeScript definitions (#2916) (c21a1ac)
- Additional commit information (d0180c4)
- allow
addChannelplugins to returnfalsein order to signify no release was done (e1c7269) - allow
publishplugins to returnfalsein order to signify no release was done (47484f5) - allow
publishplugins to returnfalsein order to signify no release was done (70c68ef) - allow plugins to throw an iterable list of errors (9b2f6bf)
- allow to define multiple
generateNotesplugins (5989989) - allow to define plugin options globally (f707b1a)
- allow to disable the publish plugin hook (4454d57)
- allow to exclude commits from analysis (53f3de6)
- Allow to recover from ENOTINHISTORY with a tag and handle detached head repo (580ad9c)
- allow to release any version on a branch if up to date with next branch (916c268)
- allow to release from local machine (5bc46a0)
- allow to use shorthand for
repositoryUrl(5f1d530) - bin: implement cli (a0190b7)
- bitbucket-basic-auth: support for bitbucket server basic auth (#1578) (a465801)
- clarify branch existence requirement in error messages (#3462) (05a2ea9)
- cli: add verifyConditions hook (13e2f5c)
- commits: initial functionality (861debb)
- config: Use cosmiconfig defaults to support .cjs config files (#1815) (3ecc196), closes #1814
- conventional-changelog-presets: supported new preset format (07a79ea)
- defined exports for the package (72ab317)
- docs: note that publish token is required (#1700) (885d87a)
- esm: convert to esm (#2569) (9eab1ad), closes #2543
- Expect plugins to return Promises (5bec59b)
- Extract npm and github publish to plugins (d548edc)
- get last release with git tags (d0b304e)
- hide sensitive info in stdout/sdtin (fb0caa0)
- improve CLI (97cb354)
- initial (4093bb2)
- last-release: add custom dist-tag (dbea5cc)
- last-release: initial functionality (f62525a)
- log
giterror message when authentication verification fails (cd9f2bd) - log all verification errors (cdb98f9)
- log with
signaleand allow to customizestdinandstdout(0626d57) - make semantic-release CI agnostic (8d57565)
- Make semantic-release language agnostic (0c67ba5)
- move npm workaround for missing gitHead to the npm plugin (996305d)
- nerf-dart: copy in nerf-dart module from npm (c59b5ca)
- node-version: raised the minimum required version to v14.17 (#2132) (66cc2b4)
- node-versions: drop support for node versions v20, v21, and v23 (56d16f4)
- node-versions: dropped support for node v18 and raised the minimum for v20 (2904832)
- node-versions: raise the minimum node version for the v24 range (116a188)
- node-versions: raised the minimum node v20 requirement to v20.6 (e623cc6)
- node-versions: raised the minimum required node version to v18 (#2620) (8a0d8be)
- node-versions: raised the minimum required node version to v18.17 and dropped v19 support (b9f294d)
- node-versions: raised the minimum supported node version w/in the v20 range to v20.6.1 (b93bef4)
- package: update @semantic-release/commit-analyzer to version 7.0.0 (e63e753)
- package: update condition-travis (626315e)
- pass
cwdandenvcontext to plugins (a94e08d) - pass
envi-civalues to plugins context (a8c747d) - paths: add paths configuration option to filter commits by path (#1) (6c36937)
- plugins: add getLastRelease hook (7ceac76), closes #56
- plugins: add support for loading ESM plugins (#2688) (d170f73)
- plugins: normalize plugins and have unified function signature (057e8e9)
- plugins: run verifications in series (700ec9d)
- post: Adds GitHub Enterprise support (2644bad), closes #146
- post: initial (59d852d)
- pre: plugging last-release, commits and type together (a4fe18c)
- Refactor CLI to run with one command, improve logs, modularize, add tests (e2a8a5c)
- require Node.js >=10.13 (0716a45)
- require Node.js >=8.15 (f1d983d)
- Retrieve version gitHead from git tags and unshallow the repo if necessary (85dd69b), closes #447 #393 #280 #276
- return
lastRelease,commits,nextRelease,releasesfrom JS API (417779e) - set tag author and committer name/email (61d7d38)
- ssl: expose cafile from npm config (ad2a615)
- support multiple branches and distribution channels (7b40524)
- support multiple plugins for the
analyzeCommitsstep (5180001) - support sharable configuration (754b420)
- type: initial functionality (a405021)
- use
@semantic-release/githubas default forsuccessandfailhooks (9788fca) - use Git notes to store the channels on which a version has been released (b2c1b2c)
- verify minimum required git version is installed (db1cc60)
- verify: added support for parsing hosted gitlab and other repo urls (66454e7), closes #114
- verify: initial verification for pkg, options and env (b63a43f)
Performance Improvements
- get-tags.js: bulk get for tags notes (#3732) (85187e2)
- use
git tag --merge <branch>to filter tags present in a branch history (cffe9a8)
Reverts
- docs: repared broken links to "CI configuration recipes" (e00b6c8)
- Revert "chore(deps): update dependency ava to v5.1.1" (#2682) (914b0a2)
- Revert "fix(deps): update dependency yargs to v17" (#2534) (8f07522), closes #2533
BREAKING CHANGES
- node-versions: the minimum node version for the v24 range is now v24.10.0
- node-versions: a minimum of node v22.14 is now required
- deps: the commit-analyzer plugin now expects to be used with the latest major versions of
conventional-changelog packages. if you are installing any of these packages in addition to
semantic-release, be sure to update them as well - deps: the release-notes-generator plugin now expects to be used with the latest major
versions of conventional-changelog packages. if you are installing any of these packages in addition
to semantic-release, be sure to update them as well - deps: woodpecker ci users need to upgrade to v1.0.0 or higher to remain supported. see
https://github.com/semantic-release/env-ci/releases/tag/v11.0.0 for more information - node-versions: support for node v18 has been dropped and the minimum for v20 is now v20.8.1
related to semantic-release#3088
- deps: if using
release.config.jsas the name of your config file, it needs to be moved to a.config/directory. see https://github.com/cosmiconfig/cosmiconfig/releases/tag/v9.0.0 for more detail - node-versions: the minimum supported version for the v20 range of node has been raised slightly to
v20.6.1 to avoid a known node bug - node-versions: the minimum supported node version in the v20 major range is now v20.6
- node-versions: node v18.17 is now the minimum supported node version and support for v19 has been dropped
- exports prevents access to internal files, but they arent intended for public use anyway
- conventional-changelog-presets: the new preset format is a breaking change when compared to the previous preset format. updating to support the new format means that the old preset format is no longer supported. update your preset to the latest version to maintain compatibility
- deps: the npm plugin has updated the npm dependency to v9
- legacy authentication using
NPM_USERNAMEandNPM_PASSWORDis no longer supported. UseNPM_TOKENinstead. - esm: semantic-release is now ESM-only. since it is used through its own executable, the impact on consuming projects should be minimal
- esm: references to plugin files in configs need to include the file extension because of executing in an ESM context
- npm-plugin:
@semantic-release/npmhas also dropped support for node v15 - node v15 has been removed from our defined supported versions of node. this was done to upgrade to compatible versions of
markedandmarked-terminalthat resolved the ReDoS vulnerability. removal of support of this node version should be low since it was not an LTS version and has been EOL for several months already. - node-version: the minimum required version of node is now v14.17
- Require Node.js >= 10.18
- Require Node.js >= 10.13
- this feature change the way semantic-release keep track of the channels on which a version has been released.
It now use a JSON object stored in a Git note instead of Git tags formatted as v{version}@{channel}.
The tags formatted as v{version}@{channel} will now be ignored. If you have made releases with v16.0.0 on branches other than the default one you will have to update your repository.
The changes to make consist in:
- Finding all the versions that have been released on a branch other than the default one by searching for all tags formatted v{version}@{channel}
- For each of those version:
- Create a tag without the {@channel} if none doesn't already exists
- Add a Git note to the tag without the {@channel} containing the channels on which the version was released formatted as
{"channels":["channel1","channel2"]}and usingnullfor the default channel (for example.{"channels":[null,"channel1","channel2"]}) - Push the tags and notes
- Update the GitHub releases that refer to a tag formatted as v{version}@{channel} to use the tag without it
- Delete the tags formatted as v{version}@{channel}
- Git CLI version 2.7.1 or higher is now required
The --merge option of the git tag command has been added in Git version 2.7.1 and is now used by semantic-release
- Require Node.js => 8.15
- package: Regexp are not supported anymore for property matching in the
releaseRulesoption.
Regex are replaced by globs. For example /core-.*/ should be changed to 'core-*'.
- the
branchoption has been removed in favor ofbranches
The new branches option expect either an Array or a single branch definition. To migrate your configuration:
- If you want to publish package from multiple branches, please the configuration documentation
- If you use the default configuration and want to publish only from
master: nothing to change - If you use the
branchconfiguration and want to publish only from one branch: replacebranchbybranches("branch": "my-release-branch"=>"branches": "my-release-branch")
- Committing or creating files in the
publishplugin hook is not supported anymore and now must be done in thepreparehook
Plugins with a publish hook that makes a commit or create a file that can be committed must use the prepare hook.
successandfailhooks are now enabled by default
In order to disable the @semantic-release/github plugin for the success and fail hook, the corresponding options have to be set to false in the semantic-release configuration:
{
"release": {
"success": false,
"fail": false
}
}Users who do not use the @semantic-release/github plugin, should disable it in the success and fail by setting the corresponding options to false or to alternative plugin providing success and fail hooks.
- The
--repositoryUrlCLI options is replaced by--repository-url - Remove the
getLastReleaseplugin type
The getLastRelease plugins will not be called anymore.
- Git repository authentication is now mandatory
The Git authentication is now mandatory and must be set via GH_TOKEN, GITHUB_TOKEN, GL_TOKEN, GITLAB_TOKEN or GIT_CREDENTIALS as described in CI configuration.
semantic-releasedoesn't make sure it runs only on one Travis job anymore.
The CI configuration has to be done such thatsemantic-release
- runs only once per build
- runs only after all tests are successful on every jobs of the build
- runs on Node >=8
This can easily be done with travis-deploy-once.
Migration Guide
Modify your .travis.yml to use travis-deploy-once.
Replace:
after_success:
- npm run semantic-releaseby:
Replace
after_success:
- npm install -g travis-deploy-once@4
- travis-deploy-once "npm run semantic-release"pkgandenvare not passed to plugin anymore.
Plugins relying on apackage.jsonmust verify the presence of a validpackage.jsonand load it.
Plugins can useprocess.envinstead ofenv.- Each plugin is expected to return an async function or a Promise returning function. The callback parameter is not passed to plugins anymore.
githubToken,githubUrlandgithubApiPathPrefixhave to be set at the github plugin level. They can be set viaGH_TOKEN,GH_URLandGH_PREFIXenvironment variables.- the
npmparameter is not passed to any plugin anymore. Each plugin have to read.npmrcif they needs to (with https://github.com/kevva/npm-conf for example). - Semantic-Release must now be executed with
semantic-releaseinstead ofsemantic-release pre && npm publish && semantic-release post. - The
semantic-releasecommand now returns with exit code 0 on expected exception (no release has to be done, running on a PR, gitHead not found, other CI job failed etc...). It only returns with 1 when there is an unexpected error (code error in a plugin, plugin not found, git command cannot be run etc..). - Calling the
semantic-releasecommand with unexpected argument(s) now exit with 1 and print an help message. - Semantic-Release does not rely on
npmloganymore and the log level cannot be configured. Debug logs can be activated with CLI option--debugor with environment variableDEBUG=semantic-release:* - The CLI options
--debugdoesn't enable the dry-run mode anymore but activate the debugs. The dry run mode is now set with the CLI command--dry-runor-d. - Remove support for publishing a package with node < 8. Details.
- package: Dropped support for unmaintained Node.js versions (< v4)
- If you run travis_after_all and travis-after-all at the same
time they'll keep waiting for each other until forever. You have to apply
this patch to your.travis.yml.
* In cases where you pushed a new commit with a "dist-tag"
configuration of "next" and no version was previously published as "next",
semanitc-release failed and did not publish a new version. It will now
automatically fall back to to "latest".
* cli arguments are now normalized to camelCase, so e.g. `options['github-url']` is now `options.githubUrl`
2. Plugins no longer receive config they need one by one, but in one huge object. This way it's easier to pass more info in the future w/o breaking existing plugins that rely on the position of the callback in the arguments array.
* Plugins now need to read their passed options from one huge config object.
Old:
```js
module.exports = function (pluginConfig, foo, bar, cb) {…}New:
// ES5
module.exports = function(pluginConfig, config, cb) {
var foo = config.foo
var bar = config.bar
…
}
// ES6
module.exports = function (pluginConfig, {foo, bar}, cb) {…}