yarn 1.22.22 prints deprecation warning DEP0169 under node 24 during yarn install #118

Closed
opened 2026-10-06 09:25:34 +02:00 by clawbot · 3 comments
Collaborator

Seen in sneak/bsdaily#11, which vendors the canonical node and yarn setup from this repo at cc440118c876: under node 24, yarn install with the pinned yarn 1.22.22 prints the deprecation warning DEP0169 (url.parse()).

It shows on the CI runner image (docker.gitea.com/runner-images:ubuntu-latest), which ships its own node and corepack, so the canonical script/bootstrap uses that node instead of installing the pinned node 22. Nothing fails; the warning is printed on every bootstrap.

Options:

  • The canonical script/bootstrap uses the pinned node even when another node is already on PATH (recommended: the pin then means what it says, and the warning goes away).
  • Move the yarn pin off yarn 1 (1.22.22 is its last release), which changes every consuming repo's lockfile.

Model: opus-5-5

Seen in https://git.eeqj.de/sneak/bsdaily/pulls/11, which vendors the canonical node and yarn setup from this repo at `cc440118c876`: under node 24, `yarn install` with the pinned yarn 1.22.22 prints the deprecation warning DEP0169 (`url.parse()`). It shows on the CI runner image (`docker.gitea.com/runner-images:ubuntu-latest`), which ships its own node and corepack, so the canonical `script/bootstrap` uses that node instead of installing the pinned node 22. Nothing fails; the warning is printed on every bootstrap. Options: - The canonical `script/bootstrap` uses the pinned node even when another node is already on `PATH` (recommended: the pin then means what it says, and the warning goes away). - Move the yarn pin off yarn 1 (1.22.22 is its last release), which changes every consuming repo's lockfile. Model: opus-5-5
Author
Collaborator

Question: should the canonical script/bootstrap install and use the pinned node even when another node is already installed?

prompts/REPO_POLICIES.md says today that bootstrap "uses the installed node if present", and only otherwise installs the pinned version. The CI runner image ships node 24, so CI runs the pinned yarn 1.22.22 under node 24, which prints this deprecation warning on every bootstrap. Nothing fails.

Options:

  1. Always install and use the pinned node, whatever is already installed. The pin then means what it says everywhere and the warning goes away. Cost: every bootstrap on a host with its own node also installs the pinned one under nvm.
  2. Keep using the installed node and move yarn off yarn 1 (1.22.22 is its last release). Changes every consuming repository's lockfile and setup.
  3. Leave it and accept the warning.

Recommendation: option 1.

Model: opus-5-5

Question: should the canonical `script/bootstrap` install and use the pinned node even when another node is already installed? `prompts/REPO_POLICIES.md` says today that bootstrap "uses the installed node if present", and only otherwise installs the pinned version. The CI runner image ships node 24, so CI runs the pinned yarn 1.22.22 under node 24, which prints this deprecation warning on every bootstrap. Nothing fails. Options: 1. Always install and use the pinned node, whatever is already installed. The pin then means what it says everywhere and the warning goes away. Cost: every bootstrap on a host with its own node also installs the pinned one under nvm. 2. Keep using the installed node and move yarn off yarn 1 (1.22.22 is its last release). Changes every consuming repository's lockfile and setup. 3. Leave it and accept the warning. Recommendation: option 1. Model: opus-5-5
sneak was assigned by clawbot 2026-10-07 10:33:46 +02:00
Author
Collaborator

This no longer waits on you: the recommended option is small and easy to undo, so it is being built. Reply here to choose differently.

Plan, refining option 1. The Dockerfile stages run script/bootstrap on a pinned node 22 alpine image whose exact version is not the pin, and nvm cannot install a prebuilt node on alpine, so "always install the pinned node" would break them. Instead:

  • script/bootstrap uses the installed node only when its major version is the pinned one (22); otherwise it installs the pinned NODE_VERSION with nvm, as it already does when node is missing, and installs yarn and the packages under it.
  • script/fmt and script/fmt-check use the nvm-installed pinned node when it is there, and the yarn on PATH otherwise.
  • prompts/REPO_POLICIES.md (the bootstrap paragraph) and any checklist item that describes it say so; a TODO.md entry.

Done when a fresh checkout bootstrapped on a host whose own node is 24 prints no DEP0169 warning, and script/cibuild passes.

Model: opus-5-5

This no longer waits on you: the recommended option is small and easy to undo, so it is being built. Reply here to choose differently. Plan, refining option 1. The `Dockerfile` stages run `script/bootstrap` on a pinned node 22 alpine image whose exact version is not the pin, and nvm cannot install a prebuilt node on alpine, so "always install the pinned node" would break them. Instead: - `script/bootstrap` uses the installed node only when its major version is the pinned one (22); otherwise it installs the pinned `NODE_VERSION` with nvm, as it already does when node is missing, and installs yarn and the packages under it. - `script/fmt` and `script/fmt-check` use the nvm-installed pinned node when it is there, and the `yarn` on `PATH` otherwise. - `prompts/REPO_POLICIES.md` (the bootstrap paragraph) and any checklist item that describes it say so; a `TODO.md` entry. Done when a fresh checkout bootstrapped on a host whose own node is 24 prints no DEP0169 warning, and `script/cibuild` passes. Model: opus-5-5
sneak was unassigned by clawbot 2026-10-08 02:19:57 +02:00
clawbot self-assigned this 2026-10-08 02:19:57 +02:00
Author
Collaborator

Built as planned above in #127: script/bootstrap uses the installed node only when it is the pinned major and otherwise installs the pinned node with nvm and runs yarn under it; script/fmt and script/fmt-check prefer nvm's pinned node when it is installed. Not tried on the Gitea runner.

Model: opus-5-5

Built as planned above in https://git.eeqj.de/sneak/prompts/pulls/127: `script/bootstrap` uses the installed node only when it is the pinned major and otherwise installs the pinned node with nvm and runs yarn under it; `script/fmt` and `script/fmt-check` prefer nvm's pinned node when it is installed. Not tried on the Gitea runner. Model: opus-5-5
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/prompts#118