Releasing eslint-plugin-etc-misc
This page mirrors the root
RELEASING.md
guide.
One-time setup
- Configure npm trusted publishing for
Nick2bad4u/eslint-plugin-etc-miscand.github/workflows/release.yml. - Confirm GitHub Actions can write repository contents and request an OIDC identity token.
- Authenticate the GitHub CLI with workflow access.
The workflow publishes with npm provenance and does not need a long-lived
NPM_TOKEN when trusted publishing is configured.
Pre-release checks
Release from a clean, current main after the exact source commit passes CI
and security checks.
node scripts/setup-package-manager.mjs --check
npm ci
npm run release:check
npm run lint:package-check:strict
npm run docs:typecheck
npm run docs:build
npm run changelog:preview
Verify the packed tarball separately in a clean production consumer, including
ESM, CommonJS, declarations, real ESLint execution, and
npm audit --omit=dev.
Dependency lifecycle policy
The committed .npmrc denies Git/remote lifecycle sources and enables npm
12's strict lifecycle allowlist. package.json#allowScripts allows the native
binary setup required by @swc/core, esbuild, and unrs-resolver, while
denying the message-only core-js postinstall and optional fsevents script.
After a lockfile update, inspect npm install-scripts ls --json, run
npm install-scripts prune --dry-run --json, and change exact-version
decisions only when the installed lifecycle package set changes. Never use
--dangerously-allow-all-scripts.
Create a release
Do not bump the manifest, create a tag, or publish manually:
gh workflow run release.yml `
--ref main `
-f release_type=<patch|minor|major> `
-f ref=main `
-f skip_verify=false
The optional version=x.y.z input overrides release_type.
The workflow verifies the package, applies and commits the version, creates and
pushes the annotated tag, renders exact-tag release notes, publishes to npm with
provenance, and creates the GitHub release with tarball and ZIP assets. Never
set skip_verify=true for a normal release.
Post-release verification
The release workflow pushes its version commit and tag with GITHUB_TOKEN, so
GitHub intentionally suppresses new push workflow runs for those writes.
After the release completes, explicitly dispatch the release-commit checks:
gh workflow run ci.yml --ref main
gh workflow run codeql.yml --ref main
gh workflow run deploy-docusaurus.yml --ref main
Wait for those CI, security, and documentation runs. Then confirm:
- Git tag, GitHub release, release commit, and npm version align;
- npm provenance/signatures and registry integrity are present;
- the published tarball has the expected files and public API;
- fresh ESM, CommonJS, and NodeNext consumers work;
- the production dependency tree has no audit advisories;
- live documentation links resolve; and
- local and remote
mainare clean and consistent.
Changelog commands
npm run changelog:previewpreviews unreleased notes.npm run changelog:generatewritesCHANGELOG.md.npm run changelog:release-notesrenders the release atHEAD.
The release body is generated at workflow runtime and is not committed.