{"id":21719967,"url":"https://github.com/ext/semantic-release-lerna","last_synced_at":"2026-04-03T02:07:21.443Z","repository":{"id":38016167,"uuid":"286587377","full_name":"ext/semantic-release-lerna","owner":"ext","description":"Semantic release to publish lerna managed packages","archived":false,"fork":false,"pushed_at":"2025-06-22T09:43:25.000Z","size":75656,"stargazers_count":21,"open_issues_count":5,"forks_count":8,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-22T10:31:11.171Z","etag":null,"topics":["hacktoberfest","lerna","monorepo","npm","release","semantic-release","semantic-release-plugin"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ext.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-08-10T22:02:23.000Z","updated_at":"2025-06-22T09:42:52.000Z","dependencies_parsed_at":"2023-12-16T20:24:19.607Z","dependency_job_id":"95a2960a-77e4-4348-b4d3-ab89b3f52c9d","html_url":"https://github.com/ext/semantic-release-lerna","commit_stats":{"total_commits":433,"total_committers":7,"mean_commits":"61.857142857142854","dds":"0.48036951501154734","last_synced_commit":"3800dd851aa056eed4349c09c714b5b64e232dfe"},"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/ext/semantic-release-lerna","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ext%2Fsemantic-release-lerna","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ext%2Fsemantic-release-lerna/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ext%2Fsemantic-release-lerna/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ext%2Fsemantic-release-lerna/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ext","download_url":"https://codeload.github.com/ext/semantic-release-lerna/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ext%2Fsemantic-release-lerna/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261280131,"owners_count":23134902,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","lerna","monorepo","npm","release","semantic-release","semantic-release-plugin"],"created_at":"2024-11-26T01:46:01.139Z","updated_at":"2025-11-28T03:06:04.464Z","avatar_url":"https://github.com/ext.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# semantic-release-lerna\n\n[**semantic-release**](https://github.com/semantic-release/semantic-release) plugin to publish lerna managed [npm](https://github.com/lerna/lerna) packages to [npm](https://www.npmjs.com).\n\nIt is intended to be a drop-in replacement of the `@semantic-release/npm` plugin.\n\nThe plugin works in the following way:\n\n- You manage a monorepo using lerna.\n- You use semantic-release to automate release handling.\n- The plugin will use lerna to check which packages has been updated.\n- Package versions are latched (default latching minor and greater), i.e. patches are only published for changed packages but minor and major bumps for all packages. Use `latch` option to configure this.\n- Changelog is generated in the project root by semantic-release.\n\nAs of now the following features from `@semantic-release/npm` is not supported/implemented:\n\n- `addChannel`.\n- `tarball`.\n- Only rudimentary support for configuration options.\n- Only rudimentary support for authentication verification.\n- Only rudimentary support for private packages.\n\n| Step            | Description                                                                                                                                                                                                                                                                                       |\n| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `generateNotes` | If the plugin option `generateNotes` is true this plugin generate release notes with the commit scope set to a list of affected packages (unless otherwise specificed by the commit message). This option replaces `@semantic-release/release-notes-generator`, do not use both at the same time. |\n| `prepare`       | Update the `package.json` version and [create](https://docs.npmjs.com/cli/pack) the npm package tarball.                                                                                                                                                                                          |\n| `publish`       | [Publish the npm package](https://docs.npmjs.com/cli/publish) to the registry.                                                                                                                                                                                                                    |\n\n## Dependencies\n\nIf a package version is bumped all the packages depending (`dependencies`, `devDependencies` and `peerDependencies`) on it will also have the range updated if the range has one of the following formats:\n\n- `1.2.3`\n- `^1.2.3`\n- `^1.2`\n- `^1`\n\n## Install\n\n```bash\n$ npm install semantic-release-lerna -D\n```\n\n## Configuration\n\n### npm registry authentication\n\nWhen publishing to the [official registry](https://registry.npmjs.org/), it is recommended to use [trusted publishing](https://docs.npmjs.com/trusted-publishers) for authentication.\nSee the [npm registry authentication](https://github.com/semantic-release/npm?tab=readme-ov-file#npm-registry-authentication) section for `@semantic-release/npm` for details.\n\n\u003e [!IMPORTANT]\n\u003e Trusted publishing requires Lerna v9 or later.\n\u003e If you still use an older version you need to either use `NPM_TOKEN` or update your Lerna version.\n\nEach non-private package will need trusted publishing to be enabled.\n\nFor alternative registries or when trusted publishing cannot be used the `NPM_TOKEN` environment variable must be set.\n\n### semantic release configuration\n\nThe plugin can be configured in the [**semantic-release** configuration file](https://github.com/semantic-release/semantic-release/blob/master/docs/usage/configuration.md#configuration):\n\n```json\n{\n  \"plugins\": [\n    \"@semantic-release/commit-analyzer\",\n    [\"semantic-release-lerna\", { \"generateNotes\": true }],\n    \"@semantic-release/changelog\",\n    [\n      \"@semantic-release/git\",\n      {\n        \"assets\": [\n          \"CHANGELOG.md\",\n          \"lerna.json\",\n          \"package.json\",\n          \"package-lock.json\",\n          \"packages/*/package.json\",\n          \"packages/*/package-lock.json\"\n        ]\n      }\n    ]\n  ]\n}\n```\n\n## Options\n\n| Option          | Description                                                                                                                                                                                                           | Default   |\n| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- |\n| `generateNotes` | Set to `true` to enable generating release notes. See `generateNotes` step for more details.                                                                                                                          | `false`   |\n| `npmVerifyAuth` | Set to `false` to disable verifying NPM registry credentials.                                                                                                                                                         | `true`    |\n| `latch`         | Latches package versions together. If the version bump is at least the given version all packages will be bumped regardless if the package has been touched or not. `\"major\", \"minor\", \"patch\", \"prerelease\", \"none\"` | `\"minor\"` |\n| `rootVersion`   | Allow to update version on root `package.json`.                                                                                                                                                                       | `true`    |\n\n## Troubleshooting\n\n### Working tree has uncommitted changes\n\n\u003e lerna ERR! EUNCOMMIT Working tree has uncommitted changes, please commit or remove the following changes before continuing:\n\nConfigure `@semantic-release/git` to commit `lerna.json` and `package.json` from the package folders.\nSee example configuration above.\n\n### Error: Cannot modify immutable object\n\nThe conventional changelog packages have mismatching versions.\nThis plugin supports both `conventional-changelog-writer` v7 and v8 as long as the preset has a matching version.\n\nAssuming you use `conventional-changelog-conventionalcommits` as preset you can verify this with:\n\n    npm ls conventional-changelog-writer conventional-changelog-commits\n\nIf the major version of the packages differs you need to explicitly install the correct versions:\n\n    npm install conventional-changelog-writer@8 conventional-changelog-commits@8\n\nSubstitute `@8` with `@7` if you need to stay on v7.\nUsually you can get away with removing the packages from `package.json` afterwards as long as the lockfile (e.g. `package-lock.json`) still retains the requested versions of the packages.\n\nIf you do not have a configured preset `conventional-changelog-angular` is used by default, same rule applies, the major version has to be the same.\n\nAlso note that `semantic-release` v24 requires v8 of thte conventional changelog packages.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fext%2Fsemantic-release-lerna","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fext%2Fsemantic-release-lerna","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fext%2Fsemantic-release-lerna/lists"}