Publishes a package to JSR with a version based on the current git tag or otherwise runs a dry publish.
This enables you to not have to store a version number in git and instead rely on tags for publishing. The usage is a single line to add to your GHA workflow file.
Currently only works on GHA (PRs welcome for other CIs).
-
Update your deno.json(c)/jsr.json(c) to have a zeroed out version:
{ "name": "@scope/pkg", "version": "0.0.0", "exports": "./mod.ts" }
-
Update your GHA to run this package instead of
deno publish
:- name: Publish on tag # replace x.x.x with pinned version of this package run: deno run -A jsr:@david/[email protected] # or forward additional arguments to `deno publish` # run: deno run -A jsr:@david/[email protected] --allow-slow-types
For an example, see the ci.yml file in this repository.
-
Ensure your workflow has sufficient permissions to publish (see JSR's publishing instructions):
permissions: contents: read id-token: write
-
On jsr.io, link your package to your GitHub repo in your package's publish settings.
-
Draft a new release on GitHub and publish the release with a tag.
- Alternatively, tag your repo with a version and push the changes.
- ex.
git tag 0.1.0 && git push 0.1.0
- ex.
- Note: The tag may have a leading
v
prefix. - This will kick off the workflow run that will publish with the tagged version.
- Alternatively, tag your repo with a version and push the changes.