chore(release): ship npm wrapper and install-method guidance#34
Merged
Conversation
Adds nodeup-npm/, the pinned-version npm distribution channel that's the remaining piece of Phase 7 (issue #17). The wrapper is a thin downloader: scripts/check.js validates the OS/arch matrix at preinstall time, scripts/install.js downloads the static Go binary matching package.json's binaryVersion field at postinstall time. Pinned-version design (rather than fetching "latest") so the wrapper and the Go binary move together - bumped in the same PR, tested together, shipped together. Also reworks the Installation section of the README and docs/installation.md with a who-should-use-which matrix. Each channel now states the persona it fits (Homebrew user, Scoop user, npm-globals user, locked-down env, contributor) and the tradeoffs (especially the npm wrapper's Node-coupling and one-release lag). Co-Authored-By: Sonnet 4.6 <noreply@puku.sh>
|
✔️ f5cead7 - Conventional commits check succeeded. |
This was referenced Jul 1, 2026
dipto0321
added a commit
that referenced
this pull request
Jul 1, 2026
…ecklist (#36) Fills the gap left after #34 shipped the wrapper source into nodeup-npm/. The wrapper now exists on a clean install-from-tarball path, but publishing it to the npmjs.com registry is a manual step that's distinct from the GitHub release flow: - npmjs.com account + 2FA (authenticator mode) prereq - the v1.0.0 GitHub release has to exist before `npm publish`, because scripts/install.js fetches from the matching tag - the publish flow with OTP prompt and a `npm pack --dry-run` pre-flight to confirm only the 5 expected files ship - a note on automating later via NPM_TOKEN, after the first manual publish has confirmed the account + package name wiring Tracking issue: #35. Co-authored-by: dipto0321 <dipto@local> Co-authored-by: Sonnet 4.6 <noreply@puku.sh>
16 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
nodeup-npm/, the pinned-version npm distribution channel thatcloses the remaining piece of Phase 7 (issue #17). The wrapper is a
thin downloader:
scripts/check.js— preinstall platform/arch matrix check(matches GoReleaser's archive naming; fails fast on
freebsd/openbsd/ia32/arm/ppc64/s390x)
scripts/install.js— postinstall downloader that fetches thematching static Go binary from the GitHub release tagged by
binaryVersioninpackage.jsonpackage.json— pinsbinaryVersion: "1.0.0"; the wrapper andbinary move together, bumped in the same PR
LICENSE,README.md,.npmignore— supporting files for thewrapper itself
Pinned-version style was chosen over fetching
latestso thatnpm installis reproducible (same package version → same binaryversion) and so
npm update -g nodeupnever produces a surprisemajor-version bump from a fresh
latesttag.Also reworks the
README.mdInstallation section anddocs/installation.mdwith a who-should-use-which matrix. Eachchannel now spells out the persona it fits and the tradeoffs —
especially the npm wrapper's Node-coupling and one-release lag, which
make Homebrew/Scoop/direct-binary the better fit for
nvm/fnm/Voltausers.Linked issues
Closes #17
Type of change
feat— new feature (MINOR bump)fix— bug fix (PATCH bump)refactor— no behavior changedocs— documentation onlychore— maintenance / dependency bumpchore— release / distribution channelci— CI/CD onlybuild— build system onlyChecklist
chore(release): subject)make cilocally (build + test + vet pass; golangci-lintv2.12.2 on this dev box doesn't accept the older
output.formatsmap shape in
.golangci.yml— that's a pre-existing local-envmismatch unrelated to this PR; CI pins the right version)
JS scripts under
nodeup-npm/; integration is covered by thefirst npm-publish smoke test in the release checklist
docs/installation.md,nodeup-npm/README.md)Scope notes / things reviewers may want to look at
homebrew-tapandscoop-bucketsecrets are already wired up(issue chore(release): finalize GoReleaser config and npm wrapper #17's secret checklist). What's still open after this PR:
.goreleaser.yamlbrews:/scoops:blocks (if notalready present — I didn't audit
.goreleaser.yamlin this PR).v1.0.0tag push + cross-platform smoke tests.nodeup-npmactually being published to the npm registry(
npm publishfromnodeup-npm/afternpm login).check.js,install.js)are intentionally small and self-contained — the failure modes
(HTTP errors, missing binaries, platform mismatch) are exercised
by the first
npm install -g nodeupsmoke test, not unit tests.Adding a fake-HTTP Mocha suite would test the install script
against a mocked GitHub but not the real release pipeline, which
is what we actually care about.
.npmignore. Excludesbin/(populated at install time byinstall.js) and the local dev scratch undernodeup-npm/. Thepublished tarball is exactly:
scripts/install.js,scripts/check.js,README.md,LICENSE, plus the auto-derivedpackage.json.README.mdanddocs/installation.mdhad a flat list of channels with copy-pasteinstall commands. They now have a comparison matrix + per-channel
"who this is for / tradeoffs" sections. The deeper doc
(
docs/installation.md) also gets a "pick once and stick" footerto discourage mixing channels.
Screenshots / output
N/A — distribution-channel change, no user-visible UI.
How to verify locally
Real end-to-end verification (
npm install -g nodeup) requires thefirst
v1.0.0release tag to exist on GitHub — that's still in therelease checklist.