{"_id":"@bpmn-io/release","_rev":"9-4d1dc6c10070a1ab0afc9d387e7b2b52","name":"@bpmn-io/release","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"name":"@bpmn-io/release","version":"0.1.0","license":"MIT","_id":"@bpmn-io/release@0.1.0","maintainers":[{"name":"bpmn-io-admin","email":"bpmnio@camunda.com"},{"name":"nikku","email":"git_nikku@nixis.de"},{"name":"barmac","email":"maciejbarel@gmail.com"},{"name":"philippfromme","email":"philippfromme@outlook.com"},{"name":"maxtru","email":"maximilian.trumpf@camunda.com"},{"name":"skaiir-camunda","email":"valentin.serra@camunda.com"},{"name":"vsgoulart","email":"vinicius@vsgoulart.com"},{"name":"barinali","email":"ali.barin53@gmail.com"},{"name":"jarekdanielak","email":"jarek.danielak@camunda.com"},{"name":"ev-camunda","email":"ev.bilske@camunda.com"},{"name":"alekseymanetov","email":"alekseyManetov@gmail.com"}],"homepage":"https://github.com/bpmn-io/release#readme","bugs":{"url":"https://github.com/bpmn-io/release/issues"},"bin":{"bio-release":"bin/release.js"},"dist":{"shasum":"193c13d283fcd3a5b41129e2aef0c7dcb6b57ef4","tarball":"https://registry.npmjs.org/@bpmn-io/release/-/release-0.1.0.tgz","fileCount":8,"integrity":"sha512-frcfWKYLkarynlSHH2APqFw4kknIXKrhkk0mqQhTltr04MLnr/lKE1dWN5gkodGi8T5uUmMKyeKMFDIeOVf/aA==","signatures":[{"sig":"MEUCIEerXm8gHuszSr+SmHJoMYNxAkXVITejq2VwpXmK4fZrAiEAxoILZnAkmRJgu6SInz3xOJJClxfxcst+Ag/wtKV744Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26480},"main":"index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./index.js"},"gitHead":"c32d9f59365114413af2965142bb7e4e00f709b3","_npmUser":{"name":"nikku","email":"git_nikku@nixis.de"},"repository":{"url":"git+https://github.com/bpmn-io/release.git","type":"git"},"_npmVersion":"11.17.0","description":"Publish changed packages of an npm monorepo - bpmn.io style.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/release_0.1.0_1782852815866_0.6968375281626538","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bpmn-io/release","version":"0.2.0","license":"MIT","_id":"@bpmn-io/release@0.2.0","maintainers":[{"name":"bpmn-io-admin","email":"bpmnio@camunda.com"},{"name":"nikku","email":"git_nikku@nixis.de"},{"name":"barmac","email":"maciejbarel@gmail.com"},{"name":"philippfromme","email":"philippfromme@outlook.com"},{"name":"maxtru","email":"maximilian.trumpf@camunda.com"},{"name":"skaiir-camunda","email":"valentin.serra@camunda.com"},{"name":"vsgoulart","email":"vinicius@vsgoulart.com"},{"name":"barinali","email":"ali.barin53@gmail.com"},{"name":"jarekdanielak","email":"jarek.danielak@camunda.com"},{"name":"ev-camunda","email":"ev.bilske@camunda.com"},{"name":"alekseymanetov","email":"alekseyManetov@gmail.com"}],"homepage":"https://github.com/bpmn-io/release#readme","bugs":{"url":"https://github.com/bpmn-io/release/issues"},"bin":{"bio-release":"bin/release.js"},"dist":{"shasum":"1828027f35c2bc4a88dff5cdb40404cec08a03ab","tarball":"https://registry.npmjs.org/@bpmn-io/release/-/release-0.2.0.tgz","fileCount":11,"integrity":"sha512-LLNm0aGs7rFCOb+5D6EW7MHSMu7Cah2WvIft5vULROyb0xx2WNf6kXXlN2eFPldKHK3KBZI+xMrG4DNvGCZR+w==","signatures":[{"sig":"MEQCIEUiJPzHlupdy/JJ/DRVvTTp1NuVV5yttzDOXJvv1b3rAiB14N02VUUCAIqqTvPI/2cwOXR7p9tWAjdM+piurh2oSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30682},"main":"index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./index.js"},"gitHead":"e77a3e7768f7d83e103c400faba2cd2108372f8c","scripts":{"all":"npm test","test":"node --test"},"_npmUser":{"name":"nikku","email":"git_nikku@nixis.de"},"repository":{"url":"git+https://github.com/bpmn-io/release.git","type":"git"},"_npmVersion":"11.17.0","description":"Publish changed packages of an npm monorepo - bpmn.io style.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"nano-spawn":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/release_0.2.0_1783110534633_0.3838192371461788","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bpmn-io/release","version":"0.3.0","license":"MIT","_id":"@bpmn-io/release@0.3.0","maintainers":[{"name":"bpmn-io-admin","email":"bpmnio@camunda.com"},{"name":"nikku","email":"git_nikku@nixis.de"},{"name":"barmac","email":"maciejbarel@gmail.com"},{"name":"philippfromme","email":"philippfromme@outlook.com"},{"name":"maxtru","email":"maximilian.trumpf@camunda.com"},{"name":"skaiir-camunda","email":"valentin.serra@camunda.com"},{"name":"vsgoulart","email":"vinicius@vsgoulart.com"},{"name":"barinali","email":"ali.barin53@gmail.com"},{"name":"ev-camunda","email":"ev.bilske@camunda.com"},{"name":"jarekdanielak","email":"jarek.danielak@camunda.com"},{"name":"alekseymanetov","email":"alekseyManetov@gmail.com"}],"homepage":"https://github.com/bpmn-io/release#readme","bugs":{"url":"https://github.com/bpmn-io/release/issues"},"bin":{"bio-release":"bin/release.js"},"dist":{"shasum":"07588d72733266a2c37e493461023303c2a45a29","tarball":"https://registry.npmjs.org/@bpmn-io/release/-/release-0.3.0.tgz","fileCount":11,"integrity":"sha512-OlzOipCkc4lifggIxYZogkALecmUyxuL44pANrn8aQZiZT5Zx1psYSMjl7DTmnL9KGCWzoPbJvBYHS8eoY7eqQ==","signatures":[{"sig":"MEUCIQCfOk7yvbLwUrTAfxJ6NBhZmabI49OtOjjWMyZ0w/8XkAIgA21xxkp3hG/jpohOz9PZhoBMn3X+h8F2wAhVivTeLDM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43026},"main":"index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./index.js"},"gitHead":"64969e4327c3b30b0d2f831b531d72a7e8fa1c45","scripts":{"all":"npm test","test":"node --test"},"_npmUser":{"name":"barmac","email":"maciejbarel@gmail.com"},"repository":{"url":"git+https://github.com/bpmn-io/release.git","type":"git"},"_npmVersion":"11.17.0","description":"Publish changed packages of an npm monorepo - bpmn.io style.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"nano-spawn":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/release_0.3.0_1784203000674_0.29400815838421046","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bpmn-io/release","version":"0.4.0","license":"MIT","_id":"@bpmn-io/release@0.4.0","maintainers":[{"name":"bpmn-io-admin","email":"bpmnio@camunda.com"},{"name":"nikku","email":"git_nikku@nixis.de"},{"name":"barmac","email":"maciejbarel@gmail.com"},{"name":"philippfromme","email":"philippfromme@outlook.com"},{"name":"maxtru","email":"maximilian.trumpf@camunda.com"},{"name":"skaiir-camunda","email":"valentin.serra@camunda.com"},{"name":"vsgoulart","email":"vinicius@vsgoulart.com"},{"name":"barinali","email":"ali.barin53@gmail.com"},{"name":"ev-camunda","email":"ev.bilske@camunda.com"},{"name":"jarekdanielak","email":"jarek.danielak@camunda.com"},{"name":"alekseymanetov","email":"alekseyManetov@gmail.com"}],"homepage":"https://github.com/bpmn-io/release#readme","bugs":{"url":"https://github.com/bpmn-io/release/issues"},"bin":{"bio-release":"bin/release.js"},"dist":{"shasum":"e2d0de921ea6776597fcf15d188557ab503558b4","tarball":"https://registry.npmjs.org/@bpmn-io/release/-/release-0.4.0.tgz","fileCount":11,"integrity":"sha512-Y365Id0uTpWsZG3BspjiHFNjr4slL/ldtGWYyg2cFyib0YQ9NIxWMaZT34d2L4TLv9bVdvXes9T/l20g54xX0w==","signatures":[{"sig":"MEYCIQDdAdw5LS2Fhz677PsmyhOKZpEs9rTtXuMgEJ77u9cuYwIhAN9XJgqBY/T1UIp4h134cozgZDNWhztVVVE7KD8KpPuI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45519},"main":"index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./index.js"},"gitHead":"0da7b0b58ffa10125102055ae64c8b56048b97da","scripts":{"all":"npm run lint && npm test","lint":"eslint .","test":"node --test"},"_npmUser":{"name":"nikku","email":"git_nikku@nixis.de"},"repository":{"url":"git+https://github.com/bpmn-io/release.git","type":"git"},"_npmVersion":"11.17.0","description":"Publish changed packages of an npm monorepo - bpmn.io style.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"nano-spawn":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","eslint-plugin-bpmn-io":"^2.3.1"},"_npmOperationalInternal":{"tmp":"tmp/release_0.4.0_1785226587492_0.626651830511707","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bpmn-io/release","version":"0.5.0","license":"MIT","_id":"@bpmn-io/release@0.5.0","maintainers":[{"name":"bpmn-io-admin","email":"bpmnio@camunda.com"},{"name":"nikku","email":"git_nikku@nixis.de"},{"name":"barmac","email":"maciejbarel@gmail.com"},{"name":"philippfromme","email":"philippfromme@outlook.com"},{"name":"maxtru","email":"maximilian.trumpf@camunda.com"},{"name":"skaiir-camunda","email":"valentin.serra@camunda.com"},{"name":"vsgoulart","email":"vinicius@vsgoulart.com"},{"name":"barinali","email":"ali.barin53@gmail.com"},{"name":"ev-camunda","email":"ev.bilske@camunda.com"},{"name":"jarekdanielak","email":"jarek.danielak@camunda.com"},{"name":"alekseymanetov","email":"alekseyManetov@gmail.com"}],"homepage":"https://github.com/bpmn-io/release#readme","bugs":{"url":"https://github.com/bpmn-io/release/issues"},"bin":{"bio-release":"bin/release.js"},"dist":{"shasum":"51b7d81bf97f07999118473e6420cb86192b6842","tarball":"https://registry.npmjs.org/@bpmn-io/release/-/release-0.5.0.tgz","fileCount":12,"integrity":"sha512-UujISYqZvDpMUGrq4r9yPN0YrHauEK1BYYX2fZadull8knl4GZwBXsaeiU29enSNpX6WXsubiUfu2w9nfiPEKg==","signatures":[{"sig":"MEQCIALakgaSQs+IYjiO9aa6Qa4PhN6+dfZLA2BzLM9EWa2oAiBKiKyrh2cWEVrfMGtiH85x0TNyuhQ8Zkkcg9Fwr8RJtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70962},"main":"index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./index.js"},"gitHead":"309da3ffaa69d4c88061bc3186bb8f6e450da8b1","scripts":{"all":"npm run lint && npm test","lint":"eslint .","test":"node --test"},"_npmUser":{"name":"barmac","email":"maciejbarel@gmail.com"},"repository":{"url":"git+https://github.com/bpmn-io/release.git","type":"git"},"_npmVersion":"11.17.0","description":"Publish changed packages of an npm monorepo - bpmn.io style.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"nano-spawn":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","eslint-plugin-bpmn-io":"^2.3.1"},"_npmOperationalInternal":{"tmp":"tmp/release_0.5.0_1787053540126_0.8813610912296079","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@bpmn-io/release","version":"0.5.1","license":"MIT","_id":"@bpmn-io/release@0.5.1","maintainers":[{"name":"bpmn-io-admin","email":"bpmnio@camunda.com"},{"name":"nikku","email":"git_nikku@nixis.de"},{"name":"barmac","email":"maciejbarel@gmail.com"},{"name":"philippfromme","email":"philippfromme@outlook.com"},{"name":"maxtru","email":"maximilian.trumpf@camunda.com"},{"name":"skaiir-camunda","email":"valentin.serra@camunda.com"},{"name":"vsgoulart","email":"vinicius@vsgoulart.com"},{"name":"barinali","email":"ali.barin53@gmail.com"},{"name":"ev-camunda","email":"ev.bilske@camunda.com"},{"name":"jarekdanielak","email":"jarek.danielak@camunda.com"},{"name":"alekseymanetov","email":"alekseyManetov@gmail.com"}],"homepage":"https://github.com/bpmn-io/release#readme","bugs":{"url":"https://github.com/bpmn-io/release/issues"},"bin":{"bio-release":"bin/release.js"},"dist":{"shasum":"ad8a6cd1b170c6df933083fb9e47af010268b46d","tarball":"https://registry.npmjs.org/@bpmn-io/release/-/release-0.5.1.tgz","fileCount":12,"integrity":"sha512-TCJO5BeVD2puuonrWfj40qq/DxMFYaF4X8N8r1C5Uw9g600G2NBy3JiZo6hGUviUENR9Ulsoe/fnMMtw7T4LdQ==","signatures":[{"sig":"MEUCIQCJQfg2lmABLhGtB5Yy5ZHuN+j+P5xwBptrsrKxapxC7gIgS6Zb6j294yPuYDkj8168BJph5S8say1+HFMCDMsMBEY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72710},"main":"index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./index.js"},"gitHead":"7b5389963e766c547aad6666dd0b0805584a641d","scripts":{"all":"npm run lint && npm test","lint":"eslint .","test":"node --test"},"_npmUser":{"name":"nikku","email":"git_nikku@nixis.de"},"repository":{"url":"git+https://github.com/bpmn-io/release.git","type":"git"},"_npmVersion":"12.0.2","description":"Publish changed packages of an npm monorepo - bpmn.io style.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"nano-spawn":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","eslint-plugin-bpmn-io":"^2.3.1"},"_npmOperationalInternal":{"tmp":"tmp/release_0.5.1_1787847757430_0.7393657765822286","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"_id":"@bpmn-io/release@0.6.0","bin":{"bio-release":"bin/release.js"},"bugs":{"url":"https://github.com/bpmn-io/release/issues"},"dist":{"shasum":"f81fa77c5e6923518f1ed655d7d633a11a50645a","tarball":"https://registry.npmjs.org/@bpmn-io/release/-/release-0.6.0.tgz","fileCount":13,"integrity":"sha512-7HNAPvUIiPDFavJ+rJH/Z2Z/DDIeru8cUBSLwGvhVHfzfag/gCgPTGD5/PtpZ/otyY5r9GHQ+6rtJ9r7QleZ3Q==","signatures":[{"sig":"MEUCIFc3GTbdnFu9+ZQUz3fcRvB8vCwwSH459HkwSUb6kkF0AiEA3sidF4YYKExcJwF5Dus5iwARlVH/GUTqv0U4iNqE5gQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBDT0SA/6U2sM6uDLN+gKBxFqPT6jBNQp3/UBd8+V9O7AiEAtxxUNOAb6a7TUl32ZRXyVew1ADKAYXc0ey5GRxEBn0w="}],"unpackedSize":81102},"main":"index.js","name":"@bpmn-io/release","type":"module","engines":{"node":">=22"},"exports":{".":"./index.js"},"gitHead":"da6b6491386e55548972fb222113c9a62669454a","license":"MIT","scripts":{"all":"npm run lint && npm test","lint":"eslint .","test":"node --test"},"version":"0.6.0","_npmUser":{"name":"nikku","email":"git_nikku@nixis.de"},"homepage":"https://github.com/bpmn-io/release#readme","repository":{"url":"git+https://github.com/bpmn-io/release.git","type":"git"},"_npmVersion":"12.0.2","description":"Publish changed packages of an npm monorepo - bpmn.io style.","directories":{},"maintainers":[{"name":"bpmn-io-admin","email":"bpmnio@camunda.com"},{"name":"nikku","email":"git_nikku@nixis.de"},{"name":"barmac","email":"maciejbarel@gmail.com"},{"name":"philippfromme","email":"philippfromme@outlook.com"},{"name":"maxtru","email":"maximilian.trumpf@camunda.com"},{"name":"skaiir-camunda","email":"valentin.serra@camunda.com"},{"name":"vsgoulart","email":"vinicius@vsgoulart.com"},{"name":"barinali","email":"ali.barin53@gmail.com"},{"name":"ev-camunda","email":"ev.bilske@camunda.com"},{"name":"jarekdanielak","email":"jarek.danielak@camunda.com"},{"name":"alekseymanetov","email":"alekseyManetov@gmail.com"}],"_nodeVersion":"24.16.0","dependencies":{"opener":"^1.5.2","nano-spawn":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","eslint-plugin-bpmn-io":"^2.3.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/release_0.6.0_1790003630417_0.20625746240613774"}}},"time":{"created":"2026-06-30T20:53:35.699Z","modified":"2026-09-21T15:13:50.667Z","0.1.0":"2026-06-30T20:53:35.980Z","0.2.0":"2026-07-03T20:28:54.770Z","0.3.0":"2026-07-16T11:56:40.832Z","0.4.0":"2026-07-28T08:16:27.630Z","0.5.0":"2026-08-18T11:45:40.298Z","0.5.1":"2026-08-27T16:22:37.574Z","0.6.0":"2026-09-21T15:13:50.499Z"},"bugs":{"url":"https://github.com/bpmn-io/release/issues"},"license":"MIT","homepage":"https://github.com/bpmn-io/release#readme","repository":{"url":"git+https://github.com/bpmn-io/release.git","type":"git"},"description":"Publish changed packages of an npm monorepo - bpmn.io style.","maintainers":[{"name":"bpmn-io-admin","email":"bpmnio@camunda.com"},{"name":"nikku","email":"git_nikku@nixis.de"},{"name":"barmac","email":"maciejbarel@gmail.com"},{"name":"philippfromme","email":"philippfromme@outlook.com"},{"name":"maxtru","email":"maximilian.trumpf@camunda.com"},{"name":"skaiir-camunda","email":"valentin.serra@camunda.com"},{"name":"vsgoulart","email":"vinicius@vsgoulart.com"},{"name":"barinali","email":"ali.barin53@gmail.com"},{"name":"ev-camunda","email":"ev.bilske@camunda.com"},{"name":"jarekdanielak","email":"jarek.danielak@camunda.com"},{"name":"alekseymanetov","email":"alekseyManetov@gmail.com"}],"readme":"# @bpmn-io/release\n\n[![CI](https://github.com/bpmn-io/release/actions/workflows/CI.yml/badge.svg)](https://github.com/bpmn-io/release/actions/workflows/CI.yml)\n\nPublish changed packages of an npm monorepo.\n\nDiscovers workspace packages from `package.json#workspaces` (globs expanded;\nprivate packages are included by default, versioned + tagged but never\npublished, unless `--no-private` is set), orders them\ntopologically, detects what changed since\nthe last release, asks for a version bump per package, then applies every bump in\na single commit and publishes + tags each package against that one commit.\n\n## Usage\n\nUse via [command line](#cli) or as [a library](#programmatic-api).\n\n## Requirements\n\n* Builder package uses [npm workspaces](https://docs.npmjs.com/cli/using-npm/workspaces).\n* Each package exposes a `npm run all` script\n* A [configured release strategy](#strategy)\n\n## Strategy\n\nThe strategy is **required** and read from the root `package.json`:\n\n```jsonc\n{\n  \"releaseConfig\": {\n    \"strategy\": \"independent\" // or \"fixed\"\n  }\n}\n```\n\n- **`independent`** — each package is versioned and released on its own; tags are\n  `name@version`. Dependents cascade in when a workspace dependency is released.\n- **`fixed`** — released packages share one version, detected against the `vX.Y.Z`\n  release tag and published together under a single new `vX.Y.Z` tag. Only packages\n  that changed since the baseline (plus the dependents they cascade in) are\n  released; unchanged packages keep their current version and rejoin the shared\n  version the next time they change.\n\n### Commit message\n\nThe single release commit defaults to `chore(packages): release` — and\n`chore(packages): release %version` under the `fixed` strategy. Override it via\n`releaseConfig.commitMessage`:\n\n```jsonc\n{\n  \"releaseConfig\": {\n    \"strategy\": \"fixed\",\n    \"commitMessage\": \"chore(packages): release %version\"\n  }\n}\n```\n\nThe `%version` placeholder is replaced with the `v`-prefixed release version\n(e.g. `v1.2.3`, matching the `vX.Y.Z` release tag) — so the example above yields\n`chore(packages): release v1.2.3`. Because a single shared version only exists\nunder the `fixed` strategy, `%version` may **not** be used with `independent`.\n\n## CLI\n\n```bash\n# interactive\nnpx @bpmn-io/release\n\n# non-interactive (CI)\nnpx @bpmn-io/release --bump minor --yes\nnpx @bpmn-io/release --bump @scope/a=patch --bump @scope/b=minor --yes\n\n# --bump also takes an explicit version (same grammar as `version`)\nnpx @bpmn-io/release --bump @scope/a=1.2.3 --bump @scope/b=minor --yes\n\n# non-interactive: cut 1.3.0-alpha.0 under dist-tag \"next\"\nnpx @bpmn-io/release --bump preminor --preid alpha --dist-tag next --yes\n\n# exclude private packages from the release entirely\nnpx @bpmn-io/release --no-private --bump minor --yes\n\n# force every eligible package to release, even ones without changes\nnpx @bpmn-io/release --force-release --bump minor --yes\n\n# skip the per-package build step entirely\nnpx @bpmn-io/release --no-build --bump minor --yes\n\n# version-only: stamp an explicit version onto every package (no commit/tag/publish)\nnpx @bpmn-io/release version 1.2.0-nightly.0\n```\n\nFor all flags, run `npx @bpmn-io/release --help`.\n\n## Version command\n\n`bio-release version <spec...>` is the pure **version** primitive, deliberately\ndistinct from a release. It stamps versions onto every workspace package\n(including `private` ones) and reconciles the lockfile — and does nothing else:\n\n- **no commit, no git tag, no push**\n- **no prompt, no build, no publish**\n- **lockfile only** — `npm install --package-lock-only`, so `node_modules` is left untouched\n\nWhere a **release** *decides* versions, commits, tags and (optionally) builds and\npublishes, **version** only writes versions you already decided onto disk. That\nmakes it the right tool for a CI/nightly pipeline that needs to stamp a version\n(e.g. `1.2.0-nightly.20250811`) across its workspaces before building artifacts —\nreplacing hand-rolled `set-version` scripts.\n\nA spec is either an **explicit** semver version (e.g. `1.2.3`,\n`1.2.0-nightly.0` — used verbatim) or a **bump level** (`patch`, `minor`,\n`major`, `premajor`, `preminor`, `prepatch`, `prerelease` — resolved off the\npackage's current version). A bare spec applies to every package; a `name=spec`\ntargets a specific one (and wins over the bare default). Packages left without a\nspec are untouched. This is the same per-package grammar as `release`'s `--bump`,\nso the two commands are symmetric: `version` stamps, `release` also commits, tags\nand publishes.\n\n```bash\n# stamp 1.2.0-nightly.0 onto every workspace package, refresh the lockfile\nnpx @bpmn-io/release version 1.2.0-nightly.0\n\n# stamp only the public packages\nnpx @bpmn-io/release version 1.2.3 --no-private\n\n# bump every package by one minor, resolved off its current version\nnpx @bpmn-io/release version minor\n\n# per-package: an explicit version for one, a level for another\nnpx @bpmn-io/release version @scope/a=1.2.3 @scope/b=minor\n```\n\nInternal workspace dependency ranges are pinned to `^<version>` as part of the\nstamp. Run `npx @bpmn-io/release version --help` for all flags.\n\n## Private packages\n\nBy default private packages (`\"private\": true` in their `package.json`) are\nversioned, committed and tagged alongside the public ones — they are just never\npublished to the registry. This is useful for monorepos whose deployable\nartifacts (apps, bundles) live in private workspaces but still need a shared\nversion bump and a git tag to drive the actual release (e.g. through a CI\npipeline build). With a `fixed` strategy this covers the common \"bump everything,\ntag it, publish nothing\" case. Pass `--no-private` to leave private packages out\nof the release entirely.\n\n## Force release\n\nBy default a package is only released if it changed since its last release tag.\nPass `--force-release` to release every eligible package regardless of whether it\nchanged. This is what you want when a set of packages form a single product that\nmust always move in lock-step under one shared version — e.g. a `fixed`-strategy\nmonorepo where a change to just one workspace should still bump and tag them all.\n\n## Build step\n\nBefore a package is published (or tagged) its `all` npm script is run as a build\ngate. This step is optional:\n\n- if a package has no `all` script it is skipped, with a warning;\n- pass `--no-build` to skip the build for every package regardless.\n\n## GitHub release drafts\n\nAfter the release commit and tags are pushed, a pre-filled GitHub release draft\nopens in your browser for every release tag (mirroring\n[`np`](https://github.com/sindresorhus/np)): one per `name@version` tag under\n`independent`, one for the shared `vX.Y.Z` tag under `fixed`. The draft body\nlists the shipped commit subjects; pre-releases are marked as such. Private\npackages are never published, so they get no draft.\n\nSkipped when `origin` is not on GitHub; if no browser can be opened, the draft\nURL is printed instead. Pass `--no-release-draft` to turn it off.\n\n## Pre-releases\n\nYou can safely cut an `alpha` / `rc` release either through interactive\nselection (you are asked for the pre-release identifier and dist-tag) or\nnon-interactively by passing a `--preid` alongside an explicit, non-`latest`\n`--dist-tag` to publish under.\n\nPre-release bump levels start or advance a pre-release, and plain `patch` /\n`minor` / `major` on a pre-release *graduate* it to the final version:\n\n| current | bump (`--preid alpha`) | result |\n| --- | --- | --- |\n| `1.2.3` | `preminor` | `1.3.0-alpha.0` |\n| `1.3.0-alpha.0` | `prerelease` | `1.3.0-alpha.1` |\n| `1.3.0-alpha.1` | `minor` (graduate) | `1.3.0` |\n\nBecause publishing a pre-release move (graduating, or re-cutting after a botched\npublish) may not touch any code since the last release tag, a package sitting on\na pre-release version is always offered for release — the usual \"nothing changed,\nskip it\" gate does not apply while a pre-release is in progress.\n\n## Programmatic API\n\n```js\nimport { release, createScriptedPrompter } from '@bpmn-io/release';\n\nconst result = await release({\n  cwd: process.cwd(),          // repository root\n  logger: console,             // any { log, warn, error }\n  distTag: 'next',             // required for pre-releases; never `latest`\n  releaseDraft: false,         // do not open GitHub release drafts (default: true)\n  prompter: createScriptedPrompter({ bump: 'preminor', preid: 'alpha', yes: true })\n});\n\n// {\n//   strategy, released: [{ name, version }], skipped: [name],\n//   aborted?: boolean, tags?: [string]\n// }\n```\n\nA **prompter** drives interactive decisions:\n\n```js\n{\n  bump({ name, currentVersion }): { type, preid, distTag } | 'skip',\n  confirm({ plan, strategy }): boolean,\n  close(): void\n}\n```\n\n`type` is one of `patch | minor | major | premajor | preminor | prepatch |\nprerelease`, `preid` (e.g. `alpha`) is the pre-release identifier used by the\n`pre*` types, and `distTag` is the npm dist-tag chosen for a pre-release (never\n`latest`; omit it for a stable bump to default to `latest`).\n\n`createInteractivePrompter({ defaultPreid, defaultDistTag })` (readline, the\ndefault) and `createScriptedPrompter({ bumps, bump, preid, yes })` (head-less)\nare provided.\n\n`release()` returns its result rather than calling `process.exit`, and throws a\n`ReleaseError` for expected failures (dirty tree, missing npm auth, missing\nstrategy). The CLI translates those into a non-zero exit.\n\n### `setVersion`\n\nFor the version-only primitive, use `setVersion`:\n\n```js\nimport { setVersion } from '@bpmn-io/release';\n\n// stamp one version onto every package\nconst stamped = await setVersion('1.2.0-nightly.0', {\n  cwd: process.cwd(),      // repository root\n  logger: console,         // any { log, warn }\n  excludePrivate: false    // stamp private packages too (default)\n});\n\n// [{ name, version }]\n\n// or resolve per-package specs (explicit versions or bump levels)\nawait setVersion('minor', {\n  overrides: { '@scope/a': '1.2.3' },  // wins over the default for @scope/a\n  preid: 'alpha'                       // identifier for pre* levels\n});\n```\n\n`setVersion(defaultSpec, options)` resolves a target version per package —\n`defaultSpec` applies to every discovered package, `options.overrides[name]`\ntargets specific ones — then stamps it, pins internal workspace dependency ranges\nto `^<version>` and runs a single `npm install --package-lock-only` (lockfile\nonly, never `node_modules`). No commit, tag, prompt, build or\npublish. A spec is an explicit version (`1.2.3`, `1.2.0-nightly.0`) or a bump\nlevel (`patch`, `minor`, …). Throws a `ReleaseError` for an invalid spec or an\noverride naming an unknown package (nothing is mutated in that case).\n\nThe spec resolver is also exported as `resolveVersion(spec, current, preid)`,\nshared with `release()` so both accept the same grammar.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}