Commit Graph

12 Commits

Author SHA1 Message Date
Zoltan Kochan
50fbecae7d refactor(env): pnpm env use now delegates to pnpm add --global (#10666)
This PR overhauls `pnpm env` use to route through pnpm's own install machinery instead of maintaining a parallel code path with manual symlink/shim/hardlink logic.

```
pnpm env use -g <version>
```

now runs:

```
pnpm add --global node@runtime:<version>
```

via `@pnpm/exec.pnpm-cli-runner`. All manual symlink, hardlink, and cmd-shim code in `envUse.ts` is gone (~1000 lines removed across the package).

### Changes

**npm and npx shims on all platforms**

Added `getNodeBinsForCurrentOS(platform)` to `@pnpm/constants`, returning a `Record<string, string>` with the correct relative paths for `node`, `npm`, and `npx` inside a Node.js distribution. `BinaryResolution.bin` is widened from `string` to `string | Record<string, string>` in `@pnpm/resolver-base` and `@pnpm/lockfile.types`, so the node resolver can set all three entries and pnpm's bin-linker creates shims for each automatically.

**Windows npm/npx fix**

`addFilesFromDir` was skipping root-level `node_modules/` (to avoid storing a package's own dependencies), which stripped the bundled `npm` from Node.js Windows zip archives. Added an `includeNodeModules` option and enabled it from the binary fetcher so Windows distributions keep their full contents.

**Removed subcommands**

`pnpm env add` and `pnpm env remove` are removed. `pnpm env use` handles both installing and activating a version. `pnpm env list` now always lists remote versions (the `--remote` flag is no longer required, though it is kept for backwards compatibility).

**musl support**

On Alpine Linux and other musl-based systems, the musl variant of Node.js is automatically downloaded from [unofficial-builds.nodejs.org](https://unofficial-builds.nodejs.org).
2026-02-22 12:06:34 +01:00
Zoltan Kochan
491a84fb26 feat: use ESM instead of commonjs (#9870) 2025-08-25 10:02:00 +02:00
Zoltan Kochan
f176285cac test: update Jest to v30 (#9866) 2025-08-15 15:28:41 +02:00
Hyunbin
4d2923858a fix(env): --global related error messages (#7456) 2023-12-26 12:59:34 +01:00
Eric Kwoka
2e6915727d feat(env): allow installing and removing multiple NodeJS versions at once (#7155)
---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
2023-10-05 03:13:46 +03:00
Zoltan Kochan
4c959b7122 test: do not finish the workers after each test run 2023-08-25 18:13:41 +03:00
Zoltan Kochan
58cc58f14f fix: use the new tarball fetcher for fetching node.js (#6938)
ref #6850
2023-08-14 16:27:01 +03:00
Zoltan Kochan
34724dd0f2 fix: env use should work on Windows (#6884)
close #6587
2023-07-31 11:39:50 +03:00
Zoltan Kochan
4b97f1f07a perf: don't use await inside loops (#6617) 2023-06-05 12:12:47 +03:00
GreyXor
36ffbfcd4b fix: typo standalone (#6244) 2023-03-19 21:02:40 +02:00
Zoltan Kochan
e570adc101 fix(env): fail with a meaningful error when no pnpm home dir is found (#6134)
close #6095
close #3865
2023-02-26 05:39:44 +02:00
Zoltan Kochan
4ca53b0b50 refactor: group projects in different subdirectories (#5659) 2022-11-20 01:35:22 +02:00