From 441a2ab5f3c36511a9129cc461d3c880ebcab2b8 Mon Sep 17 00:00:00 2001 From: dipto0321 Date: Thu, 2 Jul 2026 02:04:08 +0600 Subject: [PATCH] chore(release): rename npm wrapper to nodeup-cli `nodeup` on npmjs.com is owned by an unrelated, dormant 2015 package (romanmt/nodeup, "a simple cluster implementation for node"), so we cannot claim that name. Ship the wrapper as `nodeup-cli` instead - keeps the `nodeup` brand token visible while leaving the binary itself unchanged (still installs as `nodeup` on $PATH). Updates: - nodeup-npm/package.json name field - README.md Installation section (matrix entry + npm section) - docs/installation.md (matrix entry + npm section + footer) - nodeup-npm/README.md (install cmd + clarify the rename rationale) - docs/release-checklist.md (claim prerequisite now references `nodeup-cli` instead of `nodeup`) Verified: `npm pack --dry-run` from nodeup-npm/ now produces `nodeup-cli-1.0.0.tgz` with the same 5 files. Co-Authored-By: Sonnet 4.6 --- README.md | 14 ++++++++++---- docs/installation.md | 14 ++++++++++---- docs/release-checklist.md | 10 ++++++---- nodeup-npm/README.md | 22 ++++++++++++++-------- nodeup-npm/package.json | 2 +- 5 files changed, 41 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index cf99bfc..6cac481 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ spell out exactly what to run. |---|---|---| | Already use Homebrew for dev tooling on macOS / Linux | **Homebrew** | One command, auto-updates with `brew upgrade`, lives outside any Node install, uninstalls cleanly with `brew uninstall`. | | Already use Scoop on Windows | **Scoop** | Same shape as Homebrew on the Windows side — `scoop update nodeup` keeps it current, no admin shell needed. | -| Already manage dev tools via `npm install -g` and want a one-liner | **npm wrapper** | No new package manager to set up; the install travels with the Node version it's installed against. Slight catch: a `nodeup` upgrade ships when the wrapper version bumps. | +| Already manage dev tools via `npm install -g` and want a one-liner | **npm wrapper** (`nodeup-cli`) | No new package manager to set up; the install travels with the Node version it's installed against. Slight catch: a `nodeup` upgrade ships when the wrapper version bumps. The npm name is `nodeup-cli` because `nodeup` is taken. | | Are blocked from system package installs but can `npm i -g` | **npm wrapper** | Sandboxed / corp-locked-down machines often allow npm globals where they block system installers. | | Maintain `nodeup` itself, or want a version pinned to a specific tag without any postinstall network step | **Direct binary download** | You choose the exact release; no installer, no auto-update, no Node coupling. Best for reproducible CI installs. | | Are a Go developer hacking on `nodeup` and want the latest commit | **`go install`** | Pulls the current source and builds it locally. Fastest iteration loop for contributors. | @@ -103,11 +103,17 @@ auto-managed by GoReleaser from `scoop: {}` in `.goreleaser.yaml`. #### npm wrapper (any platform with Node ≥ 14) ```bash -npm install -g nodeup +npm install -g nodeup-cli ``` -Best for: anyone who treats their global npm install as the source of -truth for CLI tools — typical in JavaScript / TypeScript projects. +The wrapper is published as **`nodeup-cli`**, not `nodeup`, because +the bare `nodeup` name on npmjs.com is owned by an unrelated, +dormant 2015 package (`romanmt/nodeup` — "a simple cluster +implementation for node"). The downloaded binary still installs +as the `nodeup` CLI on your `$PATH`. + +Best for: anyone who treats their global npm install as the source +of truth for CLI tools — typical in JavaScript / TypeScript projects. The wrapper is a thin downloader (`scripts/install.js`) that fetches the matching static Go binary from the GitHub release tagged by this package's `binaryVersion` field. See diff --git a/docs/installation.md b/docs/installation.md index b7fce2d..2e7afdc 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -25,7 +25,7 @@ exactly what to run. |---|---|---|---|---|---| | **Homebrew** | `brew install dipto0321/tap/nodeup` | Yes — `brew upgrade` | `/opt/homebrew/bin/` (macOS) or `/home/linuxbrew/.linuxbrew/bin/` (Linux) | macOS / Linux devs already using Homebrew for tooling | You don't have Homebrew and don't want to set it up just for one tool | | **Scoop** | `scoop install nodeup` (after adding the bucket) | Yes — `scoop update` | `%USERPROFILE%\scoop\apps\nodeup\` | Windows devs already using Scoop | You prefer winget / Chocolatey — neither is wired up today | -| **npm wrapper** | `npm install -g nodeup` | Semi — `npm update -g nodeup` only when a wrapper version bumps | Inside a Node install, on your global `node_modules/` path | JS devs who already treat `npm i -g` as the source of truth for CLIs; locked-down machines that block system installers but allow npm globals | You want a CLI that lives completely outside any Node install, or you want to track Go-binary releases the moment they tag (the wrapper lags by one publish) | +| **npm wrapper** | `npm install -g nodeup-cli` | Semi — `npm update -g nodeup-cli` only when a wrapper version bumps | Inside a Node install, on your global `node_modules/` path | JS devs who already treat `npm i -g` as the source of truth for CLIs; locked-down machines that block system installers but allow npm globals | You want a CLI that lives completely outside any Node install, or you want to track Go-binary releases the moment they tag (the wrapper lags by one publish). **Note**: the package is `nodeup-cli`, not `nodeup` — `nodeup` is taken on npmjs.com. | | **Direct binary** | `curl … \| tar xz` | No — you re-run to update | Wherever you put the extracted binary | CI pipelines, reproducible installs, lock-down environments without npm or brew | You want auto-updates; you'll forget to re-run | | **From source** | `go install ./cmd/nodeup@latest` | No — re-run against a new tag | `$GOBIN` or `$GOPATH/bin` | `nodeup` contributors and Go developers who want HEAD | Anyone who doesn't have Go installed and isn't trying to hack on the tool | @@ -68,9 +68,15 @@ holds the manifest and is auto-pushed by GoReleaser. ### npm wrapper (any platform with Node ≥ 14) ```bash -npm install -g nodeup +npm install -g nodeup-cli ``` +The package is published as **`nodeup-cli`**, not `nodeup`, because +the bare `nodeup` name on npmjs.com is owned by an unrelated, +dormant 2015 package (`romanmt/nodeup` — "a simple cluster +implementation for node"). The downloaded binary still installs as +the `nodeup` CLI on your `$PATH`. + **Who this is for:** developers who already treat `npm install -g` as the canonical way to install CLIs. Common in JavaScript-heavy projects where the team's onboarding script already runs `npm i -g @@ -81,7 +87,7 @@ blocked but npm globals are allowed. - **Slight version lag.** The wrapper pins to the Go-binary version in its `binaryVersion` field. A new Go release needs a new wrapper - publish — `npm update -g nodeup` only gets you a new Go binary + publish — `npm update -g nodeup-cli` only gets you a new Go binary after the wrapper version that pins to it ships. To jump to a brand-new release ahead of that, use a direct-binary install. - **Coupled to a Node install.** The wrapper and binary live inside @@ -161,7 +167,7 @@ and uninstalls consistently: - **Homebrew** owns upgrades → use `brew upgrade nodeup`. - **Scoop** owns upgrades → use `scoop update nodeup`. -- **npm** owns upgrades → use `npm update -g nodeup`. +- **npm** owns upgrades → use `npm update -g nodeup-cli`. - **Direct binary** owns upgrades → re-run the curl one-liner (or pin a specific tag in CI). - **From source** owns upgrades → `go install -u diff --git a/docs/release-checklist.md b/docs/release-checklist.md index 83abe5e..e953332 100644 --- a/docs/release-checklist.md +++ b/docs/release-checklist.md @@ -72,10 +72,12 @@ cd .. **Required once, not per release:** -- An `npmjs.com` account with publish rights on the `nodeup` package - name. The package name must be claimed on npm before the first - publish — `npm publish` will fail with `You do not have permission - to publish "nodeup"` if it isn't. +- An `npmjs.com` account with publish rights on the `nodeup-cli` + package name. The bare `nodeup` name is owned by an unrelated + 2015 package (`romanmt/nodeup`, "a simple cluster implementation + for node") so we ship under `nodeup-cli`. `npm publish` will fail + with `You do not have permission to publish "nodeup-cli"` if the + name isn't claimed yet on your account. - **2FA enabled** on the npm account. Publishing to npmjs.com requires 2FA; configure it under `https://www.npmjs.com/settings//security`. diff --git a/nodeup-npm/README.md b/nodeup-npm/README.md index 36f59bd..6594d0e 100644 --- a/nodeup-npm/README.md +++ b/nodeup-npm/README.md @@ -1,18 +1,24 @@ -# nodeup (npm wrapper) +# nodeup-cli (npm wrapper) > Thin npm wrapper around the [`nodeup`](https://github.com/dipto0321/nodeup) > Go binary. Installs the right static binary for your OS/arch on -> `npm install -g` and exposes `nodeup` on your `$PATH`. +> `npm install -g nodeup-cli` and exposes `nodeup` on your `$PATH`. -This directory is the **npm distribution channel** for `nodeup`. It does -**not** contain the Go tool itself — it downloads the matching binary -from the [GitHub release](https://github.com/dipto0321/nodeup/releases) -that this package's `binaryVersion` field points at. +This directory is the **npm distribution channel** for `nodeup`. The +package is published as **`nodeup-cli`** because the bare `nodeup` +name on npmjs.com is owned by an unrelated, dormant 2015 package +(`romanmt/nodeup`, "a simple cluster implementation for node"). +The downloaded binary still ships as the `nodeup` CLI you know. + +It does **not** contain the Go tool itself — it downloads the +matching binary from the [GitHub +release](https://github.com/dipto0321/nodeup/releases) that this +package's `binaryVersion` field points at. ## Install ```bash -npm install -g nodeup +npm install -g nodeup-cli nodeup version ``` @@ -67,7 +73,7 @@ release bump ship in the same commit. ## Updating ```bash -npm update -g nodeup +npm update -g nodeup-cli ``` You get a new wrapper version. If that wrapper pins a newer diff --git a/nodeup-npm/package.json b/nodeup-npm/package.json index c301045..4747d66 100644 --- a/nodeup-npm/package.json +++ b/nodeup-npm/package.json @@ -1,5 +1,5 @@ { - "name": "nodeup", + "name": "nodeup-cli", "version": "1.0.0", "description": "Automated Node.js version upgrade + global package migration CLI. Static Go binary wrapped for npm distribution.", "license": "MIT",