#9
Distribute up via npm with trusted publishing
Makes the repository publish-ready for npm. The up package name on npm now belongs to this project; npm is where a JS-ecosystem CLI is expected to live (npm i -g up, npx up), and the previous curl | sh channel is frozen at its final beta.
Changes
packages/cli/package.json— rename@vercel-labs/up→up; version2.0.0(the npm name's earlier 1.x line was an unrelated project, so the major jump signals the break and keeps^1consumers untouched); remove"private": true(it blocks publishing); add"files": ["dist"]— without it npm falls back to.gitignore, which excludesdist/, and the published tarball would ship without the CLI..github/workflows/release.yml—id-token: writepermission,registry-url, and a guarded publish step using npm trusted publishing (OIDC: no token exists; provenance is attached automatically). The guard publishes only when the pushed tag is exactlyv<package.json version>— a suffixed tag can never publish a stable version — and prerelease versions (containing-) publish under thebetadist-tag solatestalways resolves to a stable build.README.md,packages/cli/README.md(the npm package page),SECURITY.md, landing — install vianpm install -g up; release verification is provenance-based (npm audit signatures) instead of CDN checksums.apps/downloads/public/install.sh— keeps working, frozen atv0.1.0-beta.5, and prints a pointer to npm. Existing release artifacts are untouched (CI enforces their immutability).
Package contents verified with npm pack --dry-run: LICENSE, README.md, dist/cli.js, package.json — 190 kB packed.
Rollout order
- Trusted publishing for the npm package
upmust be configured to accept this repo'srelease.yml(owner-side; in progress). - Merge this PR. Note: the landing starts advertising
npm i -g upwhen its deploy completes, so — - Tag the merge commit
v2.0.0and push the tag promptly.release.ymlvalidates, builds, publishes to npm with provenance, and creates the GitHub Release. - Verify:
npm install -g up && up --help, andnpm audit signaturesin a project that depends on it.
This PR publishes nothing by itself — publishing only happens when a v2.0.0 tag is pushed after merge.
Verification
Lint, typecheck, and build green; tests 156/158 (the 2 failures are pre-existing and occur only when running as root — identical on main); release-artifact verifier and installer syntax checks pass; lockfile unchanged by the rename.
Generated by Claude Code
The latest updates on your projects. Learn more about Vercel for GitHub.