This repo uses a GitHub Actions release workflow to publish the public packages.
- Stable: npm dist-tag
latest(GitHub environment:stable) - Next: manual pre-release channel with npm dist-tag
next(GitHub environment:next) - Canary: manual silent channel with npm dist-tag
canary(GitHub environment:canary)
programs/cli→ package:extensionprograms/create→ package:extension-createprograms/develop→ package:extension-developprograms/install→ package:extension-install
All other packages are private and not published.
Use the Release – Publish workflow at .github/workflows/publish-release.yml.
- Trigger:
workflow_dispatchwith inputs:channel:next,stable, orcanaryversion: explicit semver (e.g.3.0.0-next.17or3.0.0).- For
canary, this can be left empty to auto-generate:<base>-canary.<run_number>.<short_sha>
- For
- CI validates inputs, builds, and runs tests.
- Versions are set for:
programs/cli/package.jsonprograms/develop/package.jsonprograms/create/package.json
programs/install/package.json- CI publishes
extension,extension-develop,extension-create, andextension-installto npm using the selected dist-tag (latest,next, orcanary). - For
stableandnext, CI tags the release asv<version>, creates a GitHub Release, and creates a GitHub Deployment. - For
canary, CI intentionally skips git tag/commit/push, GitHub Release creation, changelog updates, and GitHub Deployment creation.
- npm tokens: use automation tokens in
NPM_TOKENsecret. nextreleases must use a pre-release semver (validated in CI).stablereleases must use a clean semver (validated in CI).canaryreleases must use a pre-release semver (validated in CI).canaryis intentionally silent: no release notes broadcast and no GitHub release event.
publishConfig.tag: "latest"explicitly set in public packages (extension,extension-develop,extension-create,extension-install).- Input validation for channel/version in the release workflow.
stable: stable releases (latest)next: next releases (next)canary: silent canary releases (canary)
Configure under Settings → Environments. They can be identical or protected with required reviewers.
- React repo practices:
facebook/react - Changelog style inspiration:
facebook/reactCHANGELOG