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
Adding packages to the ignore option in the config isn’t respected when running changeset publish. For example, we have an internal www package which we have added to ignore. But running changeset publish you see in the logs:
npm info www
At first I just assumed that the CLI doesn’t use the config file. So I added a fake package to ignore. But in that instance, the command threw an error to tell me that package foo wasn’t in the project, and it exited. So it seems the config file is being loaded, but not passed to changeset publish.
Perhaps this is intended behavior? If so, please feel to close this issue.
Proposed solution
It seems that getPackages() isn’t loading the config while it’s scanning for packages. If that passed in the config there (as well as CLI flags), it could possibly ignore packages as it’s scanning.
Reacted by bjoluc, Alexander Kachkaev, Kacper Potyrała, Srujan Gurram and Georgii Bukharov
I'd like to second this. This is our ignore property in .changesets/config.json, and this is what changeset publish decides to do with it. I'm also wondering if this is intended? Thanks in advance!
To skip over releasing a package permanently I would advise using package.json#private. Given the schema description and how confusing this can be either way - I'm in favor of extending this to prevent changeset publish from releasing those to match your expectations. @mitchellhamilton wdyt?
Thanks for the clarification, @Andarist! We switched to package.json#private for now. Since the private packages are templates for inexperienced contributors, we would indeed very much welcome an extension to this, so we/contributors do not have to remove the private field for every new package. Low priority though. Thanks again!
@Andarist I think that the packages in ignore should also be ignored when publishing, because sometimes some packages in monorepo are managed by changeset, while others are not managed by changeset, and these packages are not private. At this time, when using changeset to publish, those packages not managed by changeset will also be published.
And the packages in ignore will not have version bump, so these is definitely no need to publish. When need to publish, there will definitely be version bump first, so the package will definitely be removed from ignore.
There should be no package that does not need a bump version but needs to be published, and even if you want to publish it, it will not succeed because the same version already exists in the registry.
Reacted by Javi Aguilar, Tikkhun and Georgii Bukharov
Activity
bjoluc commentedon Oct 2, 2021
I'd like to second this. This is our
ignoreproperty in.changesets/config.json, and this is whatchangeset publishdecides to do with it. I'm also wondering if this is intended? Thanks in advance!(cc @jodeleeuw, @becky-gilbert)
Andarist commentedon Oct 2, 2021
@bjoluc thank you for providing a repro case for this - I will try to look into this
Andarist commentedon Oct 2, 2021
ignoreis not well-documented - as far as I can see. It has this description in the schema though:So it's totally understandable that you would make an assumption that a package in this list would not be released. It was not necessarily the primary motivation when it was introduced though - the main reason was to "mute" a package, somewhat temporarily. You can check out the original changeset added alongside this feature here:
https://github.com/atlassian/changesets/pull/371/files#diff-9acd1c6d8a0a10807e1ed227b8c0ec925fd9ce137d25f22dfb9203f443b1571b
To skip over releasing a package permanently I would advise using
package.json#private. Given the schema description and how confusing this can be either way - I'm in favor of extending this to preventchangeset publishfrom releasing those to match your expectations. @mitchellhamilton wdyt?bjoluc commentedon Oct 3, 2021
Thanks for the clarification, @Andarist! We switched to
package.json#privatefor now. Since the private packages are templates for inexperienced contributors, we would indeed very much welcome an extension to this, so we/contributors do not have to remove theprivatefield for every new package. Low priority though. Thanks again!grtan commentedon Sep 14, 2024
@Andarist I think that the packages in ignore should also be ignored when publishing, because sometimes some packages in monorepo are managed by changeset, while others are not managed by changeset, and these packages are not private. At this time, when using changeset to publish, those packages not managed by changeset will also be published.
And the packages in ignore will not have version bump, so these is definitely no need to publish. When need to publish, there will definitely be version bump first, so the package will definitely be removed from ignore.
There should be no package that does not need a bump version but needs to be published, and even if you want to publish it, it will not succeed because the same version already exists in the registry.
radiorz commentedon Jun 9, 2025
any update?
bluwy commentedon Aug 26, 2026
This should be fixed now as we check for the ignores before checking the publish info:
changesets/packages/cli/src/commands/publish-plan/getPublishPlan.ts
Lines 108 to 114 in 2eb65ba