You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Just wondering what people experiences around monorepos are - What tools you used? What recommendations and experiences you have?
Problem: semantic-release does not have native support for monorepos. To get around the limitation, we have created our own wrappers around semantic-release. While these served us well, there are issues:
They lack features with modern tools, i..e. control over version bumps (bumping workspaces together or separately),
Dealing with workspaces is hacky - we are stuck with yarn 1 workspaces as part of that legacy, and can't use many of the core tools to deal with workspaces.
They are yet one extra thing to maintain - for example, we were stuck with a semantic-release version for six years ago, and it wasn't easy to get it updated.
The way our wrappers were implemented sacrificed the simplicity of semantic-release for a normal repo by adding a complex setup that supports monorepos as well - this makes it harder to do things that would have been much easier for apps and normal repos, like using shareable configs and publishing preview releases from branches other than alpha and beta for testing) ...
These wrappers were a powerful solution at at the time, but there are other more mature alternatives nowadays that we
On the other hand, semantic-release has its merits. For example, the tight integration with conventional commits which is something we're used to and ideally would like to keep - this is not necessarily the approach that newer tools follow.
Why monorepos in the first place?: To bring together many libraries (and maybe apps in the future) across our GitHub organisation that are conceptually related and typically worked on together, like app-platform or CLI. We already use monorepos for few of these, just in a way that could be improved.
PS: We used changesets for a new monorepo but it's a bit of a shift in mentality from semantic-release, hence the question here to hear about people's experiences.
Changesets does not require Conventional Commits, but you can still follow them. The GitHub Action can run changeset version automatically without manual intervention.
CI auto-detects version bumps
changeset version via GitHub Action
The changesets/action can automatically create a commit with updated package versions and changelog whenever changesets are merged to main, mimicking Semantic Release’s auto-bump behavior.
Semantic Release generates changelog
Changesets generates changelog during changeset version
The Action ensures the changelog updates are committed automatically; you can still review in PR if desired.
CI commits version bump + changelog automatically
✅ Handled by GitHub Action
Using changesets/action@v1 you can fully automate committing version bumps and changelog updates, similar to Semantic Release.
Semantic Release publishes packages automatically
changeset publish via GitHub Action
The Action can run changeset publish on tags or after versioning, so your publish step is automated in CI like Semantic Release.
CI auto-tags releases
✅ Handled by GitHub Action
Tags are created automatically during changeset publish.
Skip release / handle pre-releases
Pre-releases or skipped changesets
Pre-release versions can be specified in the changeset, and the Action respects them. You can also skip publishing certain changesets.
Monorepo support with plugins
✅ Built-in Changesets
Works natively in monorepos; Action integrates smoothly to automate versioning and publishing per package.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Just wondering what people experiences around monorepos are - What tools you used? What recommendations and experiences you have?
Problem:
semantic-releasedoes not have native support for monorepos. To get around the limitation, we have created our own wrappers aroundsemantic-release. While these served us well, there are issues:yarn 1workspaces as part of that legacy, and can't use many of the core tools to deal with workspaces.alphaandbetafor testing) ...These wrappers were a powerful solution at at the time, but there are other more mature alternatives nowadays that we
On the other hand,
semantic-releasehas its merits. For example, the tight integration with conventional commits which is something we're used to and ideally would like to keep - this is not necessarily the approach that newer tools follow.Why monorepos in the first place?: To bring together many libraries (and maybe apps in the future) across our GitHub organisation that are conceptually related and typically worked on together, like app-platform or CLI. We already use monorepos for few of these, just in a way that could be improved.
PS: We used changesets for a new monorepo but it's a bit of a shift in mentality from semantic-release, hence the question here to hear about people's experiences.
Some resources:
Some of the tools
(courtesy of chatgpt)
changeset addchangeset versionautomatically without manual intervention.changeset versionvia GitHub Actionchangesets/actioncan automatically create a commit with updated package versions and changelog whenever changesets are merged to main, mimicking Semantic Release’s auto-bump behavior.changeset versionchangesets/action@v1you can fully automate committing version bumps and changelog updates, similar to Semantic Release.changeset publishvia GitHub Actionchangeset publishon tags or after versioning, so your publish step is automated in CI like Semantic Release.changeset publish.Beta Was this translation helpful? Give feedback.
All reactions