{"_id":"@-xun/release","_rev":"3-f6d43abe3848222840f196fa2940e218","name":"@-xun/release","dist-tags":{"latest":"24.2.2"},"versions":{"0.0.1":{"name":"@-xun/release","version":"0.0.1","keywords":["author","automation","changelog","module","package","publish","release","semver","version"],"author":{"name":"Xunnamius"},"license":"MIT","_id":"@-xun/release@0.0.1","maintainers":[{"name":"xunnamius","email":"git@bernarddickens.dev"}],"homepage":"https://github.com/Xunnamius/xscripts#readme","bugs":{"url":"https://github.com/Xunnamius/xscripts/issues"},"c8":{"all":true,"include":["lib/**/*.js","index.js","cli.js"],"reporter":["json","text","html"]},"ava":{"files":["test/**/*.test.js","!test/integration.test.js","!test/e2e.test.js"],"timeout":"2m","nodeArguments":["--loader=testdouble","--no-warnings"]},"bin":{"xrelease":"bin/semantic-release.js","semantic-release":"bin/semantic-release.js"},"dist":{"shasum":"c249a7abf1d4af4ae91d7916188737f285faa338","tarball":"https://registry.npmjs.org/@-xun/release/-/release-0.0.1.tgz","fileCount":55,"integrity":"sha512-Ndny68N8kWfS/G8BqrNuA/go4CkirEnQHWFFRg5QZfk+K941cs9i40xCGj0nBWu8peDfAhTtcrrp+bKEkhEOXA==","signatures":[{"sig":"MEYCIQCcQpIm/ODFM9zqLkgy0MuCBw6FRF3hmwaxL1qnHSgJaAIhAJ1UD52nq+R4HjSfUouF2gnH0tmiBCyVmc3fJVBi8C+q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":125752},"type":"module","types":"./index.d.ts","engines":{"node":">=20.8.1"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./package":"./package.json","./package.json":"./package.json"},"gitHead":"6571d3c0bf4515c7754601b84bd843f20327ccb0","scripts":{"lint":"NODE_NO_WARNINGS=1 xscripts lint --linter remark","test":"NODE_NO_WARNINGS=1 c8 ava --verbose","build":"NODE_NO_WARNINGS=1 tsc --project tsc.package.types.json --noCheck --incremental false","clean":"NODE_NO_WARNINGS=1 xscripts clean","format":"NODE_NO_WARNINGS=1 xscripts format --hush --files  README.md package.json conventional.config.cjs release.config.cjs .prettierignore tsconfig.json tsc.project.lint-unlimited.json .remarkrc.mjs","release":"NODE_NO_WARNINGS=1 xscripts release --skip-missing-tasks","list-tasks":"NODE_NO_WARNINGS=1 xscripts list-tasks","build:changelog":"NODE_NO_WARNINGS=1 xscripts build changelog"},"_npmUser":{"name":"xunnamius","email":"git@bernarddickens.dev"},"repository":{"url":"git+https://github.com/Xunnamius/xscripts.git","type":"git"},"_npmVersion":"10.9.0","description":"A semantic-release fork with support for annotated tags and monorepos","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","dependencies":{"debug":"^4.0.0","execa":"^9.0.0","yargs":"^17.5.1","env-ci":"^11.0.0","marked":"^12.0.0","semver":"^7.3.2","figures":"^6.0.0","signale":"^1.2.1","hook-std":"^3.0.0","p-reduce":"^3.0.0","lodash-es":"^4.17.21","get-stream":"^6.0.0","micromatch":"^4.0.2","cosmiconfig":"^9.0.0","semver-diff":"^4.0.0","resolve-from":"^5.0.0","find-versions":"^6.0.0","p-each-series":"^3.0.0","git-log-parser":"^1.2.0","aggregate-error":"^5.0.0","hosted-git-info":"^8.0.0","import-from-esm":"^1.3.1","marked-terminal":"^7.0.0","read-package-up":"^11.0.0","@semantic-release/npm":"^12.0.0","@semantic-release/error":"^4.0.0","@semantic-release/github":"^11.0.0","@semantic-release/commit-analyzer":"^13.0.0-beta.1","@semantic-release/release-notes-generator":"^14.0.0-beta.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"index":["index.d.ts"],"package":["package.json"]}},"_hasShrinkwrap":false,"devDependencies":{"c8":"7.14.0","ava":"5.3.0","got":"14.4.4","sinon":"19.0.2","tempy":"3.1.0","js-yaml":"4.1.0","p-retry":"6.2.0","file-url":"4.0.0","fs-extra":"11.2.0","prettier":"3.3.3","dockerode":"4.0.2","testdouble":"3.20.2","@-xun/scripts":"^1.24.0","stream-buffers":"3.0.3","mockserver-client":"5.15.0"},"_npmOperationalInternal":{"tmp":"tmp/release_0.0.1_1731315665573_0.47380434099969393","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@-xun/release","version":"0.0.2","keywords":["author","automation","changelog","module","package","publish","release","semver","version"],"author":{"name":"Xunnamius"},"license":"MIT","_id":"@-xun/release@0.0.2","maintainers":[{"name":"xunnamius","email":"git@bernarddickens.dev"}],"homepage":"https://github.com/Xunnamius/xscripts#readme","bugs":{"url":"https://github.com/Xunnamius/xscripts/issues"},"c8":{"all":true,"include":["lib/**/*.js","index.js","cli.js"],"reporter":["json","text","html"]},"ava":{"files":["test/**/*.test.js","!test/integration.test.js","!test/e2e.test.js"],"timeout":"2m","nodeArguments":["--loader=testdouble","--no-warnings"]},"bin":{"xrelease":"bin/semantic-release.js","semantic-release":"bin/semantic-release.js"},"dist":{"shasum":"f82d945b7f897a0cc90dfd6779bf5052f1ded62b","tarball":"https://registry.npmjs.org/@-xun/release/-/release-0.0.2.tgz","fileCount":31,"integrity":"sha512-jNF4FFpOVEyQDx/9FiAo3FrM4oJr76hZYikRXEFadkYXXHfkts9nQigqVy7Ts+EPem6q9t0EFX1QS8u0qiF8LA==","signatures":[{"sig":"MEQCIC3s4wSvMcW17vXIFtTBsSX9uTTz3ozNgqwhX9Og9L+MAiB7w5g+FSBDp4mcJu/DKIByOMbbHBvHjtF9+Ya1KEeO2g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":125791},"type":"module","types":"./index.d.ts","engines":{"node":">=20.8.1"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./package":"./package.json","./package.json":"./package.json"},"gitHead":"2d28b7b6201705a5a37a56eee241f3ae7a107c8e","scripts":{"lint":"NODE_NO_WARNINGS=1 xscripts lint --linter remark","test":"NODE_NO_WARNINGS=1 c8 ava --verbose","build":"echo '(note that the semantic-release index.d.ts file is hand-written)'","clean":"NODE_NO_WARNINGS=1 xscripts clean","format":"NODE_NO_WARNINGS=1 xscripts format --hush --files  README.md package.json conventional.config.cjs release.config.cjs .prettierignore tsconfig.json tsc.project.lint-unlimited.json .remarkrc.mjs","release":"NODE_NO_WARNINGS=1 xscripts release --skip-missing-tasks","list-tasks":"NODE_NO_WARNINGS=1 xscripts list-tasks","build:changelog":"NODE_NO_WARNINGS=1 xscripts build changelog"},"_npmUser":{"name":"xunnamius","email":"git@bernarddickens.dev"},"repository":{"url":"git+https://github.com/Xunnamius/xscripts.git","type":"git"},"_npmVersion":"10.9.0","description":"A semantic-release fork with support for annotated tags and monorepos","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","dependencies":{"debug":"^4.0.0","execa":"^9.0.0","yargs":"^17.5.1","env-ci":"^11.0.0","marked":"^12.0.0","semver":"^7.3.2","figures":"^6.0.0","signale":"^1.2.1","hook-std":"^3.0.0","p-reduce":"^3.0.0","lodash-es":"^4.17.21","get-stream":"^6.0.0","micromatch":"^4.0.2","cosmiconfig":"^9.0.0","semver-diff":"^4.0.0","resolve-from":"^5.0.0","find-versions":"^6.0.0","p-each-series":"^3.0.0","git-log-parser":"^1.2.0","aggregate-error":"^5.0.0","hosted-git-info":"^8.0.0","import-from-esm":"^1.3.1","marked-terminal":"^7.0.0","read-package-up":"^11.0.0","@semantic-release/npm":"^12.0.0","@semantic-release/error":"^4.0.0","@semantic-release/github":"^11.0.0","@semantic-release/commit-analyzer":"^13.0.0-beta.1","@semantic-release/release-notes-generator":"^14.0.0-beta.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"index":["index.d.ts"],"package":["package.json"]}},"_hasShrinkwrap":false,"devDependencies":{"c8":"7.14.0","ava":"5.3.0","got":"14.4.4","sinon":"19.0.2","tempy":"3.1.0","js-yaml":"4.1.0","p-retry":"6.2.0","file-url":"4.0.0","fs-extra":"11.2.0","prettier":"3.3.3","dockerode":"4.0.2","testdouble":"3.20.2","@-xun/scripts":"^1.24.0","stream-buffers":"3.0.3","mockserver-client":"5.15.0"},"_npmOperationalInternal":{"tmp":"tmp/release_0.0.2_1731411465636_0.3020726500608697","host":"s3://npm-registry-packages"}},"24.2.1":{"name":"@-xun/release","version":"24.2.1","keywords":["author","automation","changelog","module","package","publish","release","semver","version"],"author":{"name":"Xunnamius"},"license":"MIT","_id":"@-xun/release@24.2.1","maintainers":[{"name":"xunnamius","email":"git@bernarddickens.dev"}],"homepage":"https://github.com/Xunnamius/xrelease#readme","bugs":{"url":"https://github.com/Xunnamius/xrelease/issues"},"c8":{"all":true,"include":["lib/**/*.js","index.js","cli.js"],"reporter":["json","text","html"]},"ava":{"files":["test/**/*.test.js","!test/integration.test.js","!test/e2e.test.js"],"timeout":"2m","nodeArguments":["--loader=testdouble","--no-warnings"]},"bin":{"xrelease":"bin/semantic-release.js","semantic-release":"bin/semantic-release.js"},"dist":{"shasum":"83e0ff8aa5756fdebf9f91ee65322380e881619b","tarball":"https://registry.npmjs.org/@-xun/release/-/release-24.2.1.tgz","fileCount":31,"integrity":"sha512-Xwu68b1NnW0dUF2gjSF3M8SjVbkVelgBaQyEVJRZuhUD7xUVjOR+1xGKqtxZRpYdN4ESFTHitI17HLKafkgkDg==","signatures":[{"sig":"MEUCIFqGfsU93sSyC8dbd/hm8UbXrgSf73pi3W7XgiVMaLCOAiEAhF0h90Fv6VHOaIrvO+uXJ0gxhPxJoHaFdaFOhyFI6Jk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":125864},"type":"module","types":"./index.d.ts","engines":{"node":">=20.8.1"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./package":"./package.json","./package.json":"./package.json"},"gitHead":"56ff1e14b00072488bd7474bbca8853ca4f8eec5","scripts":{"lint":"NODE_NO_WARNINGS=1 xscripts lint --linter remark","test":"NODE_NO_WARNINGS=1 c8 ava --verbose","build":"echo '(note that the semantic-release index.d.ts file is hand-written)'","clean":"NODE_NO_WARNINGS=1 xscripts clean","format":"NODE_NO_WARNINGS=1 xscripts format --hush --files  README.md package.json conventional.config.cjs release.config.cjs .prettierignore tsconfig.json tsc.project.lint-unlimited.json .remarkrc.mjs","release":"NODE_NO_WARNINGS=1 xscripts release --skip-task-missing-scripts --skip-task 8 12","list-tasks":"NODE_NO_WARNINGS=1 xscripts list-tasks","build:changelog":"NODE_NO_WARNINGS=1 xscripts build changelog"},"_npmUser":{"name":"xunnamius","email":"git@bernarddickens.dev"},"repository":{"url":"git+https://github.com/Xunnamius/xrelease.git","type":"git"},"_npmVersion":"10.9.0","description":"A semantic-release fork with support for annotated tags and monorepos","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","dependencies":{"debug":"^4.0.0","execa":"^9.0.0","yargs":"^17.5.1","env-ci":"^11.0.0","marked":"^12.0.0","semver":"^7.3.2","figures":"^6.0.0","signale":"^1.2.1","hook-std":"^3.0.0","p-reduce":"^3.0.0","lodash-es":"^4.17.21","get-stream":"^6.0.0","micromatch":"^4.0.2","cosmiconfig":"^9.0.0","semver-diff":"^4.0.0","resolve-from":"^5.0.0","find-versions":"^6.0.0","p-each-series":"^3.0.0","git-log-parser":"^1.2.0","aggregate-error":"^5.0.0","hosted-git-info":"^8.0.0","import-from-esm":"^1.3.1","marked-terminal":"^7.0.0","read-package-up":"^11.0.0","@semantic-release/npm":"^12.0.0","@semantic-release/error":"^4.0.0","@semantic-release/github":"^11.0.0","@semantic-release/commit-analyzer":"^13.0.0-beta.1","@semantic-release/release-notes-generator":"^14.0.0-beta.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"index":["index.d.ts"],"package":["package.json"]}},"_hasShrinkwrap":false,"devDependencies":{"c8":"7.14.0","ava":"5.3.0","got":"14.4.4","sinon":"19.0.2","tempy":"3.1.0","js-yaml":"4.1.0","p-retry":"6.2.0","file-url":"4.0.0","fs-extra":"11.2.0","prettier":"3.3.3","dockerode":"4.0.2","testdouble":"3.20.2","@-xun/scripts":"^1.29.0","stream-buffers":"3.0.3","mockserver-client":"5.15.0"},"_npmOperationalInternal":{"tmp":"tmp/release_24.2.1_1732463496636_0.47875315258148965","host":"s3://npm-registry-packages"}},"24.2.2":{"name":"@-xun/release","version":"24.2.2","description":"A semantic-release fork with support for annotated tags and monorepos","keywords":["author","automation","changelog","module","package","publish","release","semver","version"],"homepage":"https://github.com/Xunnamius/xrelease#readme","bugs":{"url":"https://github.com/Xunnamius/xrelease/issues"},"repository":{"type":"git","url":"git+https://github.com/Xunnamius/xrelease.git"},"license":"MIT","author":{"name":"Xunnamius"},"sideEffects":false,"type":"module","exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./package":"./package.json","./package.json":"./package.json"},"typesVersions":{"*":{"index":["index.d.ts"],"package":["package.json"]}},"bin":{"semantic-release":"bin/semantic-release.js","xrelease":"bin/semantic-release.js"},"scripts":{"build":"echo '(note that the semantic-release index.d.ts file is hand-written)'","build:changelog":"symbiote build changelog --env NODE_NO_WARNINGS=1","clean":"symbiote clean --env NODE_NO_WARNINGS=1","format":"symbiote format --env NODE_NO_WARNINGS=1 --hush --files README.md package.json conventional.config.cjs release.config.cjs .prettierignore tsconfig.json tsc.project.lint-unlimited.json .remarkrc.mjs","info":"symbiote project info --env NODE_NO_WARNINGS=1","lint":"symbiote lint --env NODE_NO_WARNINGS=1 --hush --linter remark","list-tasks":"symbiote list-tasks --env NODE_NO_WARNINGS=1 --scope this-package","prepare":"symbiote project prepare --env NODE_NO_WARNINGS=1","release":"symbiote release --env NODE_NO_WARNINGS=1 --skip-task 6 8 12","test":"NODE_NO_WARNINGS=1 c8 ava --verbose"},"ava":{"files":["test/**/*.test.js","!test/integration.test.js","!test/e2e.test.js"],"nodeArguments":["--loader=testdouble","--no-warnings"],"timeout":"2m"},"c8":{"all":true,"include":["lib/**/*.js","index.js","cli.js"],"reporter":["json","text","html"]},"dependencies":{"@semantic-release/commit-analyzer":"^13.0.0","@semantic-release/error":"^4.0.0","@semantic-release/github":"^11.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/release-notes-generator":"^14.0.1","aggregate-error":"^5.0.0","cosmiconfig":"^9.0.0","debug":"^4.3.7","env-ci":"^11.1.0","execa":"^9.5.1","figures":"^6.1.0","find-versions":"^6.0.0","get-stream":"^6.0.0","git-log-parser":"^1.2.1","hook-std":"^3.0.0","hosted-git-info":"^8.0.2","import-from-esm":"^1.3.4","lodash-es":"^4.17.21","marked":"^12.0.0","marked-terminal":"^7.2.1","micromatch":"^4.0.8","p-each-series":"^3.0.0","p-reduce":"^3.0.0","read-package-up":"^11.0.0","resolve-from":"^5.0.0","semver":"^7.6.3","semver-diff":"^4.0.0","signale":"^1.4.0","yargs":"^17.7.2"},"devDependencies":{"@-xun/symbiote":"^2.23.6","ava":"5.3.0","c8":"7.14.0","dockerode":"4.0.2","file-url":"4.0.0","fs-extra":"11.2.0","got":"14.4.4","js-yaml":"4.1.0","mockserver-client":"5.15.0","p-retry":"6.2.0","prettier":"3.3.3","sinon":"19.0.2","stream-buffers":"3.0.3","tempy":"3.1.0","testdouble":"3.20.2"},"engines":{"node":">=20.8.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_id":"@-xun/release@24.2.2","gitHead":"6eb6cfc4766a3ca014cc8650cc281787dbeb20ba","types":"./index.d.ts","_nodeVersion":"22.13.1","_npmVersion":"10.9.1","dist":{"integrity":"sha512-2mgRskTW9pZXmzaloiwiXwBVyVNdH5oBGFClu/OsmrN+XUyJ2awv2XdOJdORlZ0TknucaMmcG3ZG8vwS3FGyWQ==","shasum":"88e357cba1a449ff3787e1a1ab7e7f787a92bd2a","tarball":"https://registry.npmjs.org/@-xun/release/-/release-24.2.2.tgz","fileCount":31,"unpackedSize":132719,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCnncR9F4vufouQlhyC5MTb+WK2lUCXJpHs+qG9Z3MP5QIhALU5BfhUrvmM1AuGJB5FZY4WZ6jtwakNFGzmwyyR1+95"}]},"_npmUser":{"name":"xunnamius","email":"git@bernarddickens.dev"},"directories":{},"maintainers":[{"name":"xunnamius","email":"git@bernarddickens.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/release_24.2.2_1739124498079_0.9954979450177288"},"_hasShrinkwrap":false}},"time":{"created":"2024-11-11T09:01:05.469Z","modified":"2025-02-09T18:08:18.514Z","0.0.1":"2024-11-11T09:01:05.789Z","0.0.2":"2024-11-12T11:37:45.855Z","24.2.1":"2024-11-24T15:51:36.819Z","24.2.2":"2025-02-09T18:08:18.316Z"},"bugs":{"url":"https://github.com/Xunnamius/xrelease/issues"},"author":{"name":"Xunnamius"},"license":"MIT","homepage":"https://github.com/Xunnamius/xrelease#readme","keywords":["author","automation","changelog","module","package","publish","release","semver","version"],"repository":{"type":"git","url":"git+https://github.com/Xunnamius/xrelease.git"},"description":"A semantic-release fork with support for annotated tags and monorepos","maintainers":[{"name":"xunnamius","email":"git@bernarddickens.dev"}],"readme":"<!-- symbiote-template-region-start 1 -->\n\n<p align=\"center\" width=\"100%\">\n  <img width=\"300\" src=\"https://raw.githubusercontent.com/Xunnamius/xrelease/refs/heads/main/logo.png\">\n</p>\n\n<p align=\"center\" width=\"100%\">\n<!-- symbiote-template-region-end -->\nA <a href=\"https://github.com/semantic-release/github\" target=\"_blank\">semantic-release</a> fork that supports annotated tags and monorepos\n<!-- symbiote-template-region-start 2 -->\n</p>\n\n<hr />\n\n<!-- badges-start -->\n\n<div align=\"center\">\n\n[![Black Lives Matter!][x-badge-blm-image]][x-badge-blm-link]\n[![Last commit timestamp][x-badge-lastcommit-image]][x-badge-repo-link]\n[![Codecov][x-badge-codecov-image]][x-badge-codecov-link]\n[![Source license][x-badge-license-image]][x-badge-license-link]\n[![Uses Semantic Release!][x-badge-semanticrelease-image]][x-badge-semanticrelease-link]\n\n[![NPM version][x-badge-npm-image]][x-badge-npm-link]\n[![Monthly Downloads][x-badge-downloads-image]][x-badge-downloads-link]\n\n</div>\n\n<br />\n\n# xrelease (@-xun/release)\n\n<!-- symbiote-template-region-end -->\n\nThis [semantic-release][1] fork slightly tweaks the original so that it can work\nwith both polyrepos and monorepos (see [below][31]).\n\n> [!NOTE]\n>\n> The only reason to use xrelease over [semantic-release][1] is if you are using\n> an [symbiote][2]-powered project, your repository uses annotated tags, you\n> need the bug fixes, or your repository is a monorepo. Otherwise, just use\n> [semantic-release][1].\n\n<!-- symbiote-template-region-start 3 -->\n\n---\n\n<!-- remark-ignore-start -->\n<!-- symbiote-template-region-end -->\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n\n- [Install](#install)\n- [Additional Features](#additional-features)\n  - [Lightweight and Annotated Tag Support](#lightweight-and-annotated-tag-support)\n  - [Support for Monorepos](#support-for-monorepos)\n- [Example](#example)\n- [Appendix](#appendix)\n  - [Published Package Details](#published-package-details)\n  - [License](#license)\n- [Contributing and Support](#contributing-and-support)\n  - [Contributors](#contributors)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n<!-- symbiote-template-region-start 4 -->\n<!-- remark-ignore-end -->\n\n<br />\n\n## Install\n\n<!-- symbiote-template-region-end -->\n\nTo install xrelease:\n\n```shell\nnpm install --save-dev semantic-release@npm:@-xun/release\n```\n\nIf you want to use a specific version of xrelease, provide its semver:\n\n```shell\nnpm install --save-dev semantic-release@npm:@-xun/release@1.2.3\n```\n\n> [!NOTE]\n>\n> xrelease installations reuse the \"semantic-release\" name so that plugins with\n> semantic-release as a peer dependency are able to recognize xrelease's\n> presence.\n\n## Additional Features\n\nxrelease offers a couple improvements over upstream:\n\n### Lightweight and Annotated Tag Support\n\nBoth [lightweight and annotated tags][3] are supported.\n\n> `man git-tag` says:\n>\n> Annotated tags are meant for release while lightweight tags are meant for\n> private or temporary object labels.\n\n### Support for Monorepos\n\nMonorepo support is implemented via the existing [`tagFormat`][4] configuration\noption and the introduction of two new options: [`branchRangePrefix`][5] and\n[`gitLogOptions`][6].\n\n> [!WARNING]\n>\n> These options have only been tested in [release configuration files][7] and\n> might not be available via CLI.\n\nOnce properly configured, xrelease should be run once per package to be\nreleased, with the current working directory set to the root of each respective\npackage.\n\nFor monorepos, if the current working directory does not contain the\nrepository's release configuration file, use `--extends` to refer to its\nlocation explicitly (e.g. `--extends ../../release.config.js`); xrelease\nsupports using `--extends` to load plugins from `/node_modules/` directories\nhigher up in the repository tree. Further, a tool like [Turbo][8] can be used to\norchestrate package releases in dependency order.\n\n> [!NOTE]\n>\n> See [babel-plugin-tester's `release.config.js`][9] (polyrepo), [symbiote's\n> `release.config.js`][2] (hybridrepo) or [unified-utils's\n> `release.config.js`][10] (monorepo) for complete functional examples of\n> xrelease configurations in the wild.\n>\n> See the [symbiote wiki][11] or the [git diff between this repo and\n> upstream][12] for technical details.\n\nThe extended configuration options are:\n\n#### `tagFormat`\n\nType: `string`\\\nDefault: `\"v${version}\"`\n\nThe [git tag][13] format used by xrelease to create and identify releases. When\ncutting a new release, its corresponding tag name will be [generated][14] using\n`tagFormat`.\n\n`tagFormat` is key to proper monorepo support since it dictates which existing\ntags belong to the current package to be released and which belong to other\npackages that should be filtered out.\n\nTo support a simple monorepo that uses \"@\"-syntax for its release tags (e.g.\n`my-package@1.2.3`), your [release configuration][7] might include:\n\n```javascript\n// Tell xrelease what package-specific tags look like\ntagFormat: `${cwdPackageName}@\\${version}`;\n```\n\n> [!CAUTION]\n>\n> `\\${version}` (or `${version}` in a non-template string literal) is a [Lodash\n> template variable][14] while `${cwdPackageName}` is a variable in a [template\n> string literal][15]. That is: you are responsible for defining\n> `cwdPackageName`, while `\\${version}` is replaced by xrelease. Additionally,\n> each `tagFormat` value must contain the `version` variable exactly once, and\n> the whole `tagFormat` value must compile to a valid git reference or\n> commit-ish.\n\nTo refactor a polyrepo (that uses the standard semantic-release \"v\"-syntax for\nits tags) into a monorepo (that uses the \"@\"-syntax for its tags), optionally\nwith a root package, use [`@-xun/scripts`'s \"renovate\" command][16]:\n`npx symbiote project renovate --regenerate-assets --preset ...`.\n\n#### `gitLogOptions`\n\nType: `{ paths?: string | string[], flags?: string | string[] }`\\\nDefault: `\"v${version}\"`\n\nThe [git log][17] [command line arguments][18] used by xrelease to select\ncommits for [further analysis][19]. Currently, `gitLogOptions` has two valid\noptions: `flags` and `paths`, which correspond to\n[`git log <flags> -- <paths>`][20].\n\n`gitLogOptions` is key to proper monorepo support since it dictates what commits\nbelong to the current package to be released and which belong to other packages\nthat should be filtered out.\n\nTo support a monorepo attempting to release a new version of `my-package-1`,\nyour [release configuration][7] might include:\n\n```javascript\ngitLogOptions: {\n  // Tell xrelease to consider only commits that modify files under these paths\n  paths: [\n    ':(exclude)../my-package-2',\n    ':(exclude)../my-package-3',\n    ':(exclude)../my-package-4'\n  ];\n}\n```\n\nIn this example, we used [exclusion pathspecs][21] to create a denylist of paths\nwe _didn't want_ instead of an allowlist of paths we do want. Either approach is\nviable depending on project structure; however, using exclusions ensures\nimportant changes that happen outside the package's root directory (such as\nchanges to a shared unpublished library) are considered by xrelease when\n[analyzing commits][19].\n\nNote how the given pathspecs are relative to e.g.\n`/home/user/my-project/packages/my-package-1`. That's because xrelease should\nalways be run at the root of the package to be released.\n\nThe pathspec syntax we're using happens to work for releasing each of the other\npackages as well, assuming they are all share the same parent directory, e.g.\n`/home/user/my-project/packages`. If we wanted to release `my-package-2` next,\nwe would replace `':(exclude)../my-package-2'` with\n`':(exclude)../my-package-1'` and run xrelease again.\n\nTo support a polyrepo instead, your [release configuration][7] might include:\n\n```javascript\ngitLogOptions: {\n  // Tell xrelease not to filter commits at all and instead consider everything\n  paths: [];\n}\n```\n\nOr we could omit the `gitLogOptions` object from `release.config.js` entirely,\nwhich would be equivalent.\n\nFinally, you can use `flags` to ensure [`git log`][20] is invoked with certain\nflags. For instance, we can tell xrelease to ignore all commits reachable by an\n\"initial\" commit (including said commit itself). This could be useful if we\nforked a large project with many thousands of commits (conventional or\notherwise) that should be ignored by the commit analyzer:\n\n```javascript\ngitLogOptions: {\n  // Tell xrelease to filter commits created after the latest commit (including\n  // itself) with \"[INIT]\" suffixing its subject, a reference we acquired by\n  // running: `git log -1 --pretty=format:%H --fixed-strings --grep '\\\\[INIT]$'`\n  flags: ref ? [`^${ref}`] : [];\n}\n```\n\nYou can pass any flag that [`git log`][20] understands.\n\n#### `branchRangePrefix`\n\nType: `string`\\\nDefault: `\"\"`\n\nThe value that prefixes the [names][22] of relevant [maintenance branches][23].\nThis is used internally by xrelease to generate the proper [`branches`][24]\nconfigurations for maintenance branches that refer to particular packages in a\nmonorepo, and can be left undefined in a polyrepo.\n\n> [!CAUTION]\n>\n> The `branchRangePrefix` string must **only match maintenance branches**! If\n> you also define a non-maintenance branch with a name starting with\n> `branchRangePrefix`, xrelease's behavior is undefined.\n\nTo support a simple monorepo that uses \"[package-name@x.y.z][25]\"-syntax for its\nmaintenance branch names (e.g. `my-package@1.2.3`), your [release\nconfiguration][7] might include:\n\n```javascript\n// Tell xrelease to remove this string from maintenance branch names when\n// resolving their respective ranges and channels\nbranchRangePrefix: `${cwdPackageName}@`,\nbranches: [\n  // Tell xrelease what package-specific maintenance branch names look like.\n  // Specifically: they must begin with `branchRangePrefix`\n  `${cwdPackageName}@+([0-9])?(.{+([0-9]),x}).x`,\n  'main'\n]\n```\n\nTo refactor a polyrepo (that uses the standard semantic-release \"x.y.z\"-syntax\nfor its maintenance branch names) into a monorepo (that uses the\n\"[package@x.y.z][26]\"-syntax for its maintenance branch names), optionally with\na root package, use [`@-xun/scripts`'s \"renovate\" command][16]:\n`npx symbiote project renovate --regenerate-assets --preset ...`.\n\n## Example\n\nPutting the new configuration options together, we could use what follows to\nrelease packages from the `/home/user/my-project` hybridrepo (a monorepo with a\nroot package), which was formerly a polyrepo that we turned into a monorepo by\ngiving its root `package.json` file a [`workspaces`][27] key and [creating\nscoped aliases of existing maintenance branches and tags][16].\n\nThe `my-project` repo contains the four packages `my-package-1` through\n`my-package-4` under `/home/user/my-project/packages/*` along with a\n`/home/user/my-project/package.json` file containing the name of the root\npackage (`my-root-package`) and a `/home/user/my-project/src` directory\ncontaining the root package's source code.\n\nWe can push changes to `main`, which is our primary release branch that\npublishes to one or more packages' respective [`@latest` release channel][28]\n(the default for NPM projects). Or we can push changes to `canary`, which will\npublish to one or more packages' respective [`@canary` release channel][29]. We\ncan also push changes to a `package-name@x.y.z` branch, where `package-name`\nrepresents the name of the monorepo package and `x.y.z` represents the\n[maintenance branch `range`][30].\n\n```javascript\n// ./release.config.js\n\nfunction makeConfiguration() {\n  const { cwdPackage } = getCurrentWorkingDirectoryPackageInformation();\n  const isCwdPackageTheRootPackage = isRootPackage(cwdPackage);\n  const gitLogPathspecs = getExcludedDirectoryPathspecs(cwdPackage);\n  const cwdPackageName = cwdPackage.json.name;\n\n  return {\n    // Tell xrelease what package-specific tags look like\n    tagFormat: `${cwdPackageName}@\\${version}`,\n    // Tell xrelease to remove this string from maintenance branch names when\n    // resolving their respective ranges and channels\n    branchRangePrefix: `${cwdPackageName}@`,\n    gitLogOptions: {\n      // Tell xrelease to exclude commits from the other packages\n      paths: gitLogPathspecs\n    },\n    branches: [\n      // Tell xrelease what package-specific maintenance branch names look like.\n      // Specifically: they must begin with `branchRangePrefix`\n      `${cwdPackageName}@+([0-9])?(.{+([0-9]),x}).x`,\n      // If this is the root package, we could accept old-style branch names for\n      // the sake of compatibility. But it's usually better to just create new\n      // branch names aliases matching the `${cwdPackageName}@` pattern\n      //...(isCwdPackageTheRootPackage ? ['+([0-9])?(.{+([0-9]),x}).x'] : []),\n      'main',\n      {\n        name: 'canary',\n        channel: 'canary',\n        prerelease: true\n      }\n    ],\n    plugins: [\n      // ...\n    ]\n  };\n}\n\nmodule.exports = makeConfiguration();\n```\n\n<!-- symbiote-template-region-start 5 -->\n\n## Appendix\n\n<!-- symbiote-template-region-end -->\n<!-- symbiote-template-region-start 6 -->\n\n### Published Package Details\n\nThis is an [ESM-only package][x-pkg-esm-wine] built by Babel for use in Node.js\nversions that are not end-of-life. For TypeScript users, this package supports\nboth `\"Node10\"` and `\"Node16\"` module resolution strategies.\n\n<!-- symbiote-template-region-end -->\n<!-- symbiote-template-region-start 7 -->\n\n<details><summary>Expand details</summary>\n\nThat means ESM source will load this package via `import { ... } from ...` or\n`await import(...)` and CJS source will load this package via dynamic\n`import()`. This has several benefits, the foremost being: less code\nshipped/smaller package size, avoiding [dual package\nhazard][x-pkg-dual-package-hazard] entirely, distributables are not\npacked/bundled/uglified, and a drastically less complex build process.\n\nThe glaring downside, which may or may not be relevant, is that CJS consumers\ncannot `require()` this package and can only use `import()` in an asynchronous\ncontext. This means, in effect, CJS consumers may not be able to use this\npackage at all.\n\nEach entry point (i.e. `ENTRY`) in [`package.json`'s\n`exports[ENTRY]`][x-repo-package-json] object includes one or more [export\nconditions][x-pkg-exports-conditions]. These entries may or may not include: an\n[`exports[ENTRY].types`][x-pkg-exports-types-key] condition pointing to a type\ndeclaration file for TypeScript and IDEs, a\n[`exports[ENTRY].module`][x-pkg-exports-module-key] condition pointing to\n(usually ESM) source for Webpack/Rollup, a `exports[ENTRY].node` and/or\n`exports[ENTRY].default` condition pointing to (usually CJS2) source for Node.js\n`require`/`import` and for browsers and other environments, and [other\nconditions][x-pkg-exports-conditions] not enumerated here. Check the\n[package.json][x-repo-package-json] file to see which export conditions are\nsupported.\n\nNote that, regardless of the [`{ \"type\": \"...\" }`][x-pkg-type] specified in\n[`package.json`][x-repo-package-json], any JavaScript files written in ESM\nsyntax (including distributables) will always have the `.mjs` extension. Note\nalso that [`package.json`][x-repo-package-json] may include the\n[`sideEffects`][x-pkg-side-effects-key] key, which is almost always `false` for\noptimal [tree shaking][x-pkg-tree-shaking] where appropriate.\n\n<!-- symbiote-template-region-end -->\n<!-- symbiote-template-region-start 8 -->\n\n</details>\n\n### License\n\n<!-- symbiote-template-region-end -->\n\nSee [LICENSE][x-repo-license].\n\n<!-- symbiote-template-region-start 9 -->\n\n## Contributing and Support\n\nConsider contributing to upstream\n[semantic-release][x-badge-semanticrelease-image] instead.\n\n<!-- symbiote-template-region-end -->\n<!-- symbiote-template-region-start 10 -->\n\n### Contributors\n\n<!-- symbiote-template-region-end -->\n<!-- symbiote-template-region-start root-package-only -->\n<!-- remark-ignore-start -->\n<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n\n[![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-)\n\n<!-- ALL-CONTRIBUTORS-BADGE:END -->\n<!-- remark-ignore-end -->\n\nThanks goes to these wonderful people ([emoji\nkey][x-repo-all-contributors-emojis]):\n\n<!-- remark-ignore-start -->\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n\n<table>\n  <tbody>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://xunn.io/\"><img src=\"https://avatars.githubusercontent.com/u/656017?v=4?s=100\" width=\"100px;\" alt=\"Bernard\"/><br /><sub><b>Bernard</b></sub></a><br /><a href=\"#infra-Xunnamius\" title=\"Infrastructure (Hosting, Build-Tools, etc)\">🚇</a> <a href=\"https://github.com/Xunnamius/xrelease/commits?author=Xunnamius\" title=\"Code\">💻</a> <a href=\"https://github.com/Xunnamius/xrelease/commits?author=Xunnamius\" title=\"Documentation\">📖</a> <a href=\"#maintenance-Xunnamius\" title=\"Maintenance\">🚧</a> <a href=\"https://github.com/Xunnamius/xrelease/commits?author=Xunnamius\" title=\"Tests\">⚠️</a> <a href=\"https://github.com/Xunnamius/xrelease/pulls?q=is%3Apr+reviewed-by%3AXunnamius\" title=\"Reviewed Pull Requests\">👀</a></td>\n    </tr>\n  </tbody>\n  <tfoot>\n    <tr>\n      <td align=\"center\" size=\"13px\" colspan=\"7\">\n        <img src=\"https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg\">\n          <a href=\"https://all-contributors.js.org/docs/en/bot/usage\">Add your contributions</a>\n        </img>\n      </td>\n    </tr>\n  </tfoot>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n<!-- remark-ignore-end -->\n\nThis project follows the [all-contributors][x-repo-all-contributors]\nspecification. Contributions of any kind welcome!\n\n<!-- symbiote-template-region-end -->\n<!-- symbiote-template-region-start workspace-package-only -->\n<!-- (section elided by symbiote) -->\n<!-- symbiote-template-region-end -->\n\n[x-badge-blm-image]: https://xunn.at/badge-blm 'Join the movement!'\n[x-badge-blm-link]: https://xunn.at/donate-blm\n[x-badge-codecov-image]:\n  https://img.shields.io/codecov/c/github/Xunnamius/xrelease/main?style=flat-square&token=HWRIOBAAPW&flag=package.main_root\n  'Is this package well-tested?'\n[x-badge-codecov-link]: https://codecov.io/gh/Xunnamius/xrelease\n[x-badge-downloads-image]:\n  https://img.shields.io/npm/dm/@-xun/release?style=flat-square\n  'Number of times this package has been downloaded per month'\n[x-badge-downloads-link]: https://npmtrends.com/@-xun/release\n[x-badge-lastcommit-image]:\n  https://img.shields.io/github/last-commit/Xunnamius/xrelease?style=flat-square\n  'Latest commit timestamp'\n[x-badge-license-image]:\n  https://img.shields.io/npm/l/@-xun/release?style=flat-square\n  \"This package's source license\"\n[x-badge-license-link]: https://github.com/Xunnamius/xrelease/blob/main/LICENSE\n[x-badge-npm-image]:\n  https://xunn.at/npm-pkg-version/@-xun/release\n  'Install this package using npm or yarn!'\n[x-badge-npm-link]: https://npm.im/@-xun/release\n[x-badge-repo-link]: https://github.com/Xunnamius/xrelease\n[x-badge-semanticrelease-image]:\n  https://xunn.at/badge-semantic-release\n  'This repo practices continuous integration and deployment!'\n[x-badge-semanticrelease-link]:\n  https://github.com/semantic-release/semantic-release\n[x-pkg-dual-package-hazard]:\n  https://nodejs.org/api/packages.html#dual-package-hazard\n[x-pkg-esm-wine]:\n  https://dev.to/jakobjingleheimer/configuring-commonjs-es-modules-for-nodejs-12ed#esm-source-and-distribution\n[x-pkg-exports-conditions]:\n  https://webpack.js.org/guides/package-exports#reference-syntax\n[x-pkg-exports-module-key]:\n  https://webpack.js.org/guides/package-exports#providing-commonjs-and-esm-version-stateless\n[x-pkg-exports-types-key]:\n  https://devblogs.microsoft.com/typescript/announcing-typescript-4-5-beta#packagejson-exports-imports-and-self-referencing\n[x-pkg-side-effects-key]:\n  https://webpack.js.org/guides/tree-shaking#mark-the-file-as-side-effect-free\n[x-pkg-tree-shaking]: https://webpack.js.org/guides/tree-shaking\n[x-pkg-type]:\n  https://github.com/nodejs/node/blob/8d8e06a345043bec787e904edc9a2f5c5e9c275f/doc/api/packages.md#type\n[x-repo-all-contributors]: https://github.com/all-contributors/all-contributors\n[x-repo-all-contributors-emojis]: https://allcontributors.org/docs/en/emoji-key\n[x-repo-license]: ./LICENSE\n[x-repo-package-json]: package.json\n[1]: https://github.com/semantic-release/github\n[2]: https://github.com/Xunnamius/symbiote\n[3]:\n  https://stackoverflow.com/questions/11514075/what-is-the-difference-between-an-annotated-and-unannotated-tag\n[4]: #tagformat\n[5]: #branchrangeprefix\n[6]: #gitlogoptions\n[7]: https://github.com/Xunnamius/xrelease/blob/main/docs/usage/configuration.md\n[8]: https://github.com/vercel/turborepo\n[9]: https://github.com/babel-utils/babel-plugin-tester\n[10]: https://github.com/Xunnamius/unified-utils\n[11]: https://github.com/Xunnamius/symbiote/wiki\n[12]:\n  https://github.com/semantic-release/semantic-release/compare/master...Xunnamius:xrelease:main\n[13]: https://git-scm.com/book/en/v2/Git-Basics-Tagging\n[14]: https://lodash.com/docs#template\n[15]:\n  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals\n[16]: https://github.com/Xunnamius/symbiote#renovate\n[17]: https://git-scm.com/docs/git-log\n[18]: https://git-scm.com/docs/git-log#_options\n[19]: https://github.com/semantic-release/commit-analyzer\n[20]:\n  https://git-scm.com/docs/git-log#Documentation/git-log.txt---ltpathgt82308203\n[21]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-exclude\n[22]:\n  https://github.com/Xunnamius/xrelease/blob/main/docs/usage/workflow-configuration.md#range\n[23]:\n  https://github.com/Xunnamius/xrelease/blob/main/docs/usage/workflow-configuration.md#maintenance-branches\n[24]:\n  https://github.com/Xunnamius/xrelease/blob/main/docs/usage/configuration.md#branches\n[25]: mailto:package-name@x.y.z\n[26]: mailto:package@x.y.z\n[27]: https://docs.npmjs.com/cli/v9/configuring-npm/package-json#workspaces\n[28]:\n  https://github.com/semantic-release/semantic-release/blob/master/docs/usage/workflow-configuration.md#channel\n[29]:\n  https://github.com/semantic-release/semantic-release/blob/master/docs/usage/workflow-configuration.md#pre-release-branches\n[30]:\n  https://github.com/semantic-release/semantic-release/blob/master/docs/usage/workflow-configuration.md#maintenance-branches\n[31]: #support-for-monorepos\n","readmeFilename":"README.md"}