@pnpm/exe 11.0.4 → 11.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/pnpm.mjs +40020 -39871
  2. package/package.json +9 -10
  3. package/setup.js +39 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnpm/exe",
3
- "version": "11.0.4",
3
+ "version": "11.0.5",
4
4
  "description": "Fast, disk space efficient package manager",
5
5
  "keywords": [
6
6
  "pnpm",
@@ -32,19 +32,18 @@
32
32
  "detect-libc": "^2.0.3"
33
33
  },
34
34
  "optionalDependencies": {
35
- "@pnpm/linux-x64": "11.0.4",
36
- "@pnpm/linux-arm64": "11.0.4",
37
- "@pnpm/linuxstatic-arm64": "11.0.4",
38
- "@pnpm/linuxstatic-x64": "11.0.4",
39
- "@pnpm/macos-arm64": "11.0.4",
40
- "@pnpm/win-arm64": "11.0.4",
41
- "@pnpm/macos-x64": "11.0.4",
42
- "@pnpm/win-x64": "11.0.4"
35
+ "@pnpm/linux-arm64": "11.0.5",
36
+ "@pnpm/linuxstatic-arm64": "11.0.5",
37
+ "@pnpm/linuxstatic-x64": "11.0.5",
38
+ "@pnpm/macos-arm64": "11.0.5",
39
+ "@pnpm/win-arm64": "11.0.5",
40
+ "@pnpm/linux-x64": "11.0.5",
41
+ "@pnpm/win-x64": "11.0.5"
43
42
  },
44
43
  "devDependencies": {
45
44
  "@jest/globals": "30.3.0",
46
45
  "execa": "npm:safe-execa@0.3.0",
47
- "@pnpm/exe": "11.0.4",
46
+ "@pnpm/exe": "11.0.5",
48
47
  "@pnpm/jest-config": "1100.0.4"
49
48
  },
50
49
  "jest": {
package/setup.js CHANGED
@@ -14,7 +14,45 @@ import { exePlatformPkgName } from './platform-pkg-name.js'
14
14
  // without triggering the side effects of this preinstall script.
15
15
  const platform = process.platform
16
16
  const pkgName = exePlatformPkgName(platform, process.arch, familySync())
17
- const pkgJson = fileURLToPath(import.meta.resolve(`${pkgName}/package.json`))
17
+ let pkgJson
18
+ try {
19
+ pkgJson = fileURLToPath(import.meta.resolve(`${pkgName}/package.json`))
20
+ } catch (err) {
21
+ // Only treat ERR_MODULE_NOT_FOUND as "platform package not installed".
22
+ // Anything else (resolver bug, broken Node, etc.) should surface as-is.
23
+ if (err?.code !== 'ERR_MODULE_NOT_FOUND') throw err
24
+
25
+ // The platform package isn't on disk. The only currently-published host
26
+ // for which @pnpm/exe deliberately omits a binary is darwin-x64 (Intel
27
+ // Mac): Node.js SEA injection corrupts the binary on x64 Mach-O — see
28
+ // https://github.com/pnpm/pnpm/issues/11423 and upstream
29
+ // https://github.com/nodejs/node/issues/62893.
30
+ //
31
+ // Inside the pnpm workspace itself there's no platform package linked
32
+ // either — it would be `@pnpm/macos-x64` for darwin-x64 and we removed
33
+ // that workspace package entirely. We don't want a contributor on Intel
34
+ // hardware blocked from `pnpm install`-ing the repo to work on
35
+ // unrelated parts of pnpm, so skip silently when this script runs as
36
+ // the workspace's own @pnpm/exe (whose path always ends in
37
+ // pnpm/artifacts/exe). A path-suffix check is more precise than walking
38
+ // up for `pnpm-workspace.yaml` — that walk can false-positive if the
39
+ // user's globally-installed @pnpm/exe happens to live anywhere under
40
+ // an unrelated pnpm workspace tree.
41
+ if (import.meta.dirname.endsWith(path.join('pnpm', 'artifacts', 'exe'))) {
42
+ process.exit(0)
43
+ }
44
+
45
+ if (platform === 'darwin' && process.arch === 'x64') {
46
+ console.error(
47
+ '@pnpm/exe does not ship a working binary for Intel macOS (darwin-x64) due to an upstream Node.js SEA bug.\n' +
48
+ 'See https://github.com/pnpm/pnpm/issues/11423 and https://github.com/nodejs/node/issues/62893.\n' +
49
+ 'Workaround: install pnpm via `npm install -g pnpm` (uses your system Node.js, no SEA), or use pnpm 10.x.'
50
+ )
51
+ } else {
52
+ console.error(`Could not find platform package "${pkgName}" — @pnpm/exe does not ship a binary for ${platform}-${process.arch}.`)
53
+ }
54
+ process.exit(1)
55
+ }
18
56
  const executable = platform === 'win32' ? 'pnpm.exe' : 'pnpm'
19
57
  const platformDir = path.dirname(pkgJson)
20
58
  const bin = path.resolve(platformDir, executable)