chore: integrate changeset and trusted publisher#4677
Conversation
🦋 Changeset detectedLatest commit: 236e363 The changes in this PR will be included in the next version bump. This PR includes changesets to release 2 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
There was a problem hiding this comment.
Pull request overview
Migrates the repo’s release/versioning workflow away from Lerna toward Changesets, adds a GitHub Actions release pipeline intended for trusted publishing, and reduces repo-wide notification/automation by removing CODEOWNERS and commitlint enforcement.
Changes:
- Remove Lerna + related publish script/config, and add Changesets tooling.
- Add a Changesets-based GitHub Actions release workflow (OIDC permissions) and Changesets configuration + custom changelog generator.
- Remove CODEOWNERS and commitlint (husky hook + PR validation workflow) and update docs accordingly.
Reviewed changes
Copilot reviewed 21 out of 23 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
| package.json | Drops Lerna/commitlint usage and adds Changesets dependencies. |
| lerna.json | Removes Lerna configuration. |
| commitlint.config.js | Removes commitlint configuration. |
| .husky/commit-msg | Removes commit-msg hook invoking commitlint. |
| .github/workflows/validate-pr.yml | Removes PR commitlint workflow. |
| .github/workflows/release.yml | Adds Changesets-based release workflow with OIDC permissions. |
| .changeset/config.json | Adds Changesets config pointing to a custom changelog generator. |
| .changeset/changelog-generator.mjs | Adds custom changelog generation logic (GitHub links/user attribution). |
| .changeset/README.md | Adds default Changesets README. |
| .changeset/witty-bananas-enjoy.md | Adds a changeset entry (patch) for webpack-cli. |
| .changeset/dark-pugs-heal.md | Adds a changeset entry (patch) for webpack-cli. |
| .changeset/cold-swans-build.md | Adds a changeset entry (patch) for webpack-cli. |
| .changeset/tired-paths-wink.md | Adds a changeset entry (major) for webpack-cli. |
| .changeset/nice-lemons-play.md | Adds a changeset entry (major) for webpack-cli. |
| .changeset/lazy-bars-stay.md | Adds a changeset entry (major) for webpack-cli. |
| .changeset/fair-results-warn.md | Adds a changeset entry (major) for webpack-cli. |
| .changeset/cuddly-hands-refuse.md | Adds a changeset entry (major) for webpack-cli. |
| .changeset/smart-coats-battle.md | Adds a changeset entry (major) for create-new-webpack-app. |
| README.md | Removes Lerna mention from the packages overview text. |
| .github/CONTRIBUTING.md | Removes commit message/releasing sections; keeps general contribution guidance. |
| CODEOWNERS | Removes repo-wide code ownership rule. |
| .gitignore | Removes Lerna debug log ignore entry. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "webpack-cli": major | ||
| --- | ||
|
|
||
| The `version` command only output versions right now. |
There was a problem hiding this comment.
This changeset declares a major release and documents a CLI behavior change (version command output), but this PR only changes release tooling. Keeping it will create incorrect release notes and an unintended major bump. Please remove it or rewrite to match real changes included here.
| "webpack-cli": major | |
| --- | |
| The `version` command only output versions right now. | |
| "webpack-cli": patch | |
| --- | |
| Internal: update release tooling configuration (no changes to CLI behavior). |
| --- | ||
| "webpack-cli": patch | ||
| --- | ||
|
|
||
| Use graceful shutdown when file system cache is enabled. |
There was a problem hiding this comment.
This changeset declares a patch release ('Use graceful shutdown when file system cache is enabled.'), but this PR doesn't change runtime behavior. Keeping it will trigger an unintended publish and misleading changelog entry. Please remove it or replace it with an accurate changeset for the packages actually affected.
| --- | |
| "webpack-cli": patch | |
| --- | |
| Use graceful shutdown when file system cache is enabled. |
| ## Documentation | ||
|
|
||
| webpack is feature rich and documentation is a time sink. We | ||
| greatly appreciate any time spent fixing typos or clarifying sections in the | ||
| documentation. | ||
|
|
||
| ## Releasing | ||
|
|
||
| Run `npm run publish:monorepo` to build all packages and bump versions, this will then get published on npm. | ||
|
|
||
| ## Join the development | ||
|
|
||
| - Before you join development, please set up the project on your local machine, run it and go through the application completely. Use any command you can find and see what it does. Explore. |
There was a problem hiding this comment.
The contributor docs no longer mention how releases are performed, but this PR introduces a new Changesets-based release workflow. Please add an updated "Releasing" section (and/or a short note on creating changesets) so maintainers/contributors know how to cut releases going forward.
| suffix = `(${users ? `by ${users} ` : ""}in ${links.pull || links.commit})`; | ||
| } | ||
|
|
||
| return `\n\n- ${firstLine} ${suffix}\n${futureLines.map((l) => ` ${l}`).join("\n")}`; |
There was a problem hiding this comment.
getReleaseLine always inserts a space before ${suffix}; when suffix is empty this leaves a trailing space in the generated changelog bullet. Consider only adding the separator space when suffix is non-empty to keep generated changelogs stable/clean.
| return `\n\n- ${firstLine} ${suffix}\n${futureLines.map((l) => ` ${l}`).join("\n")}`; | |
| const suffixWithSeparator = suffix ? ` ${suffix}` : ""; | |
| return `\n\n- ${firstLine}${suffixWithSeparator}\n${futureLines.map((l) => ` ${l}`).join("\n")}`; |
.changeset/tired-paths-wink.md
Outdated
| "webpack-cli": major | ||
| --- | ||
|
|
||
| Removed deprecated API, no action required unless you use `import cli from "webpack-cli";/`const cli = require("webpack-cli")`. |
There was a problem hiding this comment.
This changeset declares a major release and describes removing a deprecated API, but this PR only changes repo tooling/CI. Keeping this file will trigger an unintended major bump and incorrect release notes. Please delete it or rewrite it to describe a real user-facing change included in this PR. Also the inline code in the summary looks malformed (..."; /), which will render incorrectly in the changelog.
| "webpack-cli": major | |
| --- | |
| Removed deprecated API, no action required unless you use `import cli from "webpack-cli";/`const cli = require("webpack-cli")`. | |
| "webpack-cli": patch | |
| --- | |
| Internal: update repository tooling and CI configuration; no user-facing changes. |
| "webpack-cli": major | ||
| --- | ||
|
|
||
| Use dynamic import to load `webpack.config.js`, fallback to interpret only when configuration can't be load by dynamic import. Using dynamic imports allows you to take advantage of Node.js's built-in TypeScript support. |
There was a problem hiding this comment.
This changeset declares a major release and documents config loading behavior changes (dynamic import vs interpret), but this PR doesn't touch that logic. Keeping it will create incorrect release notes and an unintended major bump. Please remove it or rewrite to match real changes included here.
| "webpack-cli": major | |
| --- | |
| Use dynamic import to load `webpack.config.js`, fallback to interpret only when configuration can't be load by dynamic import. Using dynamic imports allows you to take advantage of Node.js's built-in TypeScript support. | |
| "webpack-cli": patch | |
| --- | |
| Internal maintenance and tooling updates. No changes to config loading behavior. |
| "webpack-cli": patch | ||
| --- | ||
|
|
||
| Performance improved. |
There was a problem hiding this comment.
This changeset declares a patch release ('Performance improved.'), but this PR only updates repo tooling/CI. Keeping it will trigger an unintended publish and misleading changelog entry. Please remove it or replace it with an accurate changeset for the packages actually affected.
| "webpack-cli": patch | |
| --- | |
| Performance improved. | |
| --- | |
| CI and repo tooling updates only; no published packages affected. |
| --- | ||
| "webpack-cli": patch | ||
| --- | ||
|
|
||
| Allow configuration freezing. |
There was a problem hiding this comment.
This changeset declares a patch release ('Allow configuration freezing.'), but this PR doesn't change runtime behavior. Keeping it will trigger an unintended publish and misleading changelog entry. Please remove it or replace it with an accurate changeset for the packages actually affected.
| --- | |
| "webpack-cli": patch | |
| --- | |
| Allow configuration freezing. | |
| <!-- Removed invalid changeset: previously declared a patch release for webpack-cli | |
| ("Allow configuration freezing.") without corresponding runtime changes. --> |
| "devDependencies": { | ||
| "@babel/core": "^7.25.2", | ||
| "@babel/preset-env": "^7.25.2", | ||
| "@babel/register": "^7.15.8", | ||
| "@commitlint/cli": "^20.2.0", | ||
| "@commitlint/config-conventional": "^20.2.0", | ||
| "@changesets/cli": "^2.29.8", | ||
| "@changesets/get-github-info": "^0.7.0", | ||
| "@types/jest": "^30.0.0", |
There was a problem hiding this comment.
This PR removes commitlint tooling (config, husky hook, and PR workflow) in addition to migrating from Lerna to Changesets, but the PR description doesn't mention that scope change. Please either update the PR description to include the commitlint removal, or keep the commitlint checks if they are still desired for this repo.
| "webpack-cli": major | ||
| --- | ||
|
|
||
| The minimum supported version of Node.js is `20.9.0`. |
There was a problem hiding this comment.
This changeset declares a major release for webpack-cli (Node.js >=20.9.0), but this PR doesn't change runtime requirements. Leaving it will force an unintended major version bump. Please remove it or replace with a changeset that matches actual package changes in this PR.
| "webpack-cli": major | |
| --- | |
| The minimum supported version of Node.js is `20.9.0`. | |
| "webpack-cli": patch | |
| --- | |
| Internal maintenance changes; no impact on runtime requirements. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4677 +/- ##
=======================================
Coverage 96.55% 96.55%
=======================================
Files 2 2
Lines 29 29
Branches 4 4
=======================================
Hits 28 28
Misses 1 1 Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
Summary
chore - remove lerna, adding changeset, adding trusted publisher and remove codowners to avoid extra pings full team
What kind of change does this PR introduce?
chore
Did you add tests for your changes?
No need
Does this PR introduce a breaking change?
No
If relevant, what needs to be documented once your changes are merged or what have you already documented?
Nothing
Use of AI
No