Release checklist
Package metadata, verification, smoke install, and npm publishing checks for Papyrus releases.
Papyrus publishes as astro-theme-papyrus. Do not reserve or publish an empty package name.
A release must ship usable exports, docs, styles, scripts, and examples that
can be installed by another Astro site.
Before publish
-
Update
CHANGELOG.mdwith the target version and user-facing changes. -
Confirm
package.jsonhas the real package name, repository, homepage, bugs URL, keywords,license,files, publicpublishConfig, exports, and bin entries. -
Confirm
pnpm-workspace.yamlkeeps the mature-release install gate:minimumReleaseAge: 10080andminimumReleaseAgeStrict: true. This blocks registry packages published in the last seven days, including transitive dependencies. -
Run the focused release gate:
shpnpm run verify:release -
Run the broader package gate:
shpnpm run verify:package pnpm run verify:readme pnpm run build -
For a commit/release gate only, run Lighthouse:
shpnpm run verify:lighthouse -
Smoke install the packed tarball in a clean temporary Astro fixture before publishing. The fixture should import
astro-theme-papyrus/components,astro-theme-papyrus/config, andastro-theme-papyrus/papyrus.css. -
Publish only from an npm account with 2FA enabled. Keep
publishConfig.provenanceenabled so supported CI releases attach npm provenance.
Pack check
pnpm run verify:release runs npm pack --dry-run --json with a temporary npm
cache, then checks that the tarball includes README.md, LICENSE,
CHANGELOG.md, public exports, scripts, examples, styles, and release docs.
It also packs a real tarball, installs it in a temporary Astro fixture, imports
Papyrus components/config/styles from that tarball, and runs astro build.
The temporary fixture also uses the seven-day pnpm mature-release gate so
release smoke installs do not accidentally accept freshly published registry
packages.
It does not publish, create a git tag, or mutate the npm registry.
Part of Papyrus docs.