Publishing packages

Any Ende program that defines an export can be published as a package for other developers to import. This page covers where to publish and how.

Choose a registry

Ende packages are published to JSR. It accepts TypeScript directly (no build step) and generates documentation from your JSDoc comments.

Publish to JSR

Give your package a name, a version, and an entry point in ende.json:

ende.json
{
  "name": "@scope/my-package",
  "version": "1.0.0",
  "exports": "./mod.ts"
}

The name is always scoped (@scope/name). Create the scope on jsr.io the first time you publish.

Check what will be published, then publish:

ende publish --dry-run   # verify the file list and metadata
ende publish             # opens jsr.io to authenticate, then publishes

ende publish type-checks your code and verifies that your exports don't rely on anything outside the package before uploading. See the ende publish reference for flags, and Publishing packages on jsr.io for scopes, versioning, provenance, and publishing from CI.

To bump the version field between releases, you can use ende bump-version.

Workspaces

In a workspace, ende publish publishes every workspace member that has a name and version, in dependency order. See publishing workspace packages for the details.

Automating workspace releases

ende bump-version can drive a whole workspace release. Run at the workspace root with no increment, it derives each member's version bump from the Conventional Commits made since the last release, rewrites the jsr: constraints in the root import map so cross-package references stay in sync, and prepends a changelog entry to Releases.md. See deriving bumps from Conventional Commits for the rules and the flags that pin the commit range.

The Ende Standard Library publishes from CI as a reference you can adapt: publishing a GitHub release triggers its workspace_publish workflow, which runs ende publish for every member, authenticating to JSR with GitHub OIDC.

Keep going