Use custom publish scripts for packages in Atlassian Changesets, perfect for non-npm artifacts
Workflow based on this GitHub comment.
Install:
$ npm install -g @ryaninvents/changeset-run
Make sure that you have a line /.changeset/.release-plan.json
in your .gitignore
file.
Update your CI setup to run something like this:
# Create the release-plan file
$(npm bin)/changeset-run preversion
# Update the version(s) of your package(s)
$(npm bin)/changeset version
# Your typical build steps go here; for example:
npm run build
npm test
# Run your publish step for each package, as defined in `/.changeset/changeset-run.config.json`
$(npm bin)/changeset-run publish
# Push your Git tags back to the repo
git push --follow-tags
Here's the config file format. Comments here are only for illustration; if you add comments to your config file it will break.
display help for changeset-run
USAGE
$ changeset-run help [COMMAND]
ARGUMENTS
COMMAND command to show help for
OPTIONS
--all see all commands in CLI
See code: @oclif/plugin-help
Cache planned publish steps before running changeset version
USAGE
$ changeset-run preversion
OPTIONS
-h, --help show CLI help
-p, --planfile=planfile [default: ./.changeset/.release-plan.json] release plan file to write to; must be in
.gitignore
See code: src/commands/preversion.ts
Run custom publish command for one or more packages in this project.
USAGE
$ changeset-run publish
OPTIONS
-c, --config=config [default: ./.changeset/changeset-run.config.json] Path to alternate changeset-run config file
-h, --help show CLI help
-p, --planfile=planfile [default: ./.changeset/.release-plan.json] release plan file to write to; must be in
.gitignore
--exclude=exclude [default: ] Individual package name to prevent publish. May be specified multiple times;
processed after --include
--include=include [default: ] Individual package name to publish. May be specified multiple times; processed
before --exclude
See code: src/commands/publish.ts