@pnpm/tools.plugin-commands-self-updater 1000.1.49 → 1000.1.51

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.
@@ -11,12 +11,9 @@ const exec_pnpm_cli_runner_1 = require("@pnpm/exec.pnpm-cli-runner");
11
11
  const tools_path_1 = require("@pnpm/tools.path");
12
12
  const rimraf_1 = require("@zkochan/rimraf");
13
13
  const path_temp_1 = require("path-temp");
14
- const semver_1 = __importDefault(require("semver"));
15
14
  const symlink_dir_1 = __importDefault(require("symlink-dir"));
16
15
  async function installPnpmToTools(pnpmVersion, opts) {
17
- // We have moved pnpm to esm and that prevents us from using pkg to bundle pnpm to an executable.
18
- // Related issue: https://github.com/yao-pkg/pkg/issues/16
19
- const currentPkgName = semver_1.default.gt(pnpmVersion, '11.0.0-alpha') ? 'pnpm' : (0, cli_meta_1.getCurrentPackageName)();
16
+ const currentPkgName = (0, cli_meta_1.getCurrentPackageName)();
20
17
  const dir = (0, tools_path_1.getToolDirPath)({
21
18
  pnpmHomeDir: opts.pnpmHomeDir,
22
19
  tool: {
@@ -39,17 +36,23 @@ async function installPnpmToTools(pnpmVersion, opts) {
39
36
  try {
40
37
  // The reason we don't just run add.handler is that at this point we might have settings from local config files
41
38
  // that we don't want to use while installing the pnpm CLI.
39
+ // We use --ignore-scripts because `@pnpm/exe` has a `preinstall` script that runs `node setup.js`,
40
+ // which fails in environments without a system Node.js (e.g. when pnpm is installed as a standalone executable).
41
+ // Instead, we link the platform-specific binary in-process after install.
42
42
  (0, exec_pnpm_cli_runner_1.runPnpmCli)([
43
43
  'add',
44
44
  `${currentPkgName}@${pnpmVersion}`,
45
45
  '--loglevel=error',
46
- '--allow-build=@pnpm/exe',
47
- '--no-dangerously-allow-all-builds',
46
+ '--ignore-scripts',
47
+ '--config.strict-dep-builds=false',
48
48
  // We want to avoid symlinks because of the rename step,
49
49
  // which breaks the junctions on Windows.
50
50
  '--config.node-linker=hoisted',
51
51
  '--config.bin=bin',
52
52
  ], { cwd: stage });
53
+ if (currentPkgName === '@pnpm/exe') {
54
+ linkExePlatformBinary(stage);
55
+ }
53
56
  // We need the operation of installing pnpm to be atomic.
54
57
  // However, we cannot use a rename as that breaks the command shim created for pnpm.
55
58
  // Hence, we use a symlink.
@@ -69,4 +72,42 @@ async function installPnpmToTools(pnpmVersion, opts) {
69
72
  binDir,
70
73
  };
71
74
  }
75
+ // This replicates the logic from @pnpm/exe's setup.js (pnpm/artifacts/exe/setup.js).
76
+ // We can't run setup.js via require() or import() because:
77
+ // - require() fails when setup.js is ESM (pnpm v11+)
78
+ // - import() is intercepted by pkg's virtual filesystem in standalone executables
79
+ // So we inline the logic: find the platform-specific binary and hard-link it
80
+ // into the @pnpm/exe package directory.
81
+ function linkExePlatformBinary(stageDir) {
82
+ const platform = process.platform === 'win32'
83
+ ? 'win'
84
+ : process.platform === 'darwin'
85
+ ? 'macos'
86
+ : process.platform;
87
+ const arch = platform === 'win' && process.arch === 'ia32' ? 'x86' : process.arch;
88
+ const executable = platform === 'win' ? 'pnpm.exe' : 'pnpm';
89
+ const platformPkgDir = path_1.default.join(stageDir, 'node_modules', '@pnpm', `${platform}-${arch}`);
90
+ const src = path_1.default.join(platformPkgDir, executable);
91
+ if (!fs_1.default.existsSync(src))
92
+ return;
93
+ const exePkgDir = path_1.default.join(stageDir, 'node_modules', '@pnpm', 'exe');
94
+ const dest = path_1.default.join(exePkgDir, executable);
95
+ try {
96
+ fs_1.default.unlinkSync(dest);
97
+ }
98
+ catch (err) {
99
+ if (err.code !== 'ENOENT') {
100
+ throw err;
101
+ }
102
+ }
103
+ fs_1.default.linkSync(src, dest);
104
+ fs_1.default.chmodSync(dest, 0o755);
105
+ if (platform === 'win') {
106
+ const exePkgJsonPath = path_1.default.join(exePkgDir, 'package.json');
107
+ const exePkg = JSON.parse(fs_1.default.readFileSync(exePkgJsonPath, 'utf8'));
108
+ fs_1.default.writeFileSync(path_1.default.join(exePkgDir, 'pnpm'), 'This file intentionally left blank');
109
+ exePkg.bin.pnpm = 'pnpm.exe';
110
+ fs_1.default.writeFileSync(exePkgJsonPath, JSON.stringify(exePkg, null, 2));
111
+ }
112
+ }
72
113
  //# sourceMappingURL=installPnpmToTools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"installPnpmToTools.js","sourceRoot":"","sources":["../src/installPnpmToTools.ts"],"names":[],"mappings":";;;;;AAiBA,gDAsDC;AAvED,4CAAmB;AACnB,gDAAuB;AACvB,6CAAsD;AACtD,qEAAuD;AACvD,iDAAiD;AACjD,4CAAgD;AAChD,yCAAoD;AACpD,oDAA2B;AAC3B,8DAAoC;AAS7B,KAAK,UAAU,kBAAkB,CAAE,WAAmB,EAAE,IAA8B;IAC3F,iGAAiG;IACjG,0DAA0D;IAC1D,MAAM,cAAc,GAAG,gBAAM,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,gCAAqB,GAAE,CAAA;IAChG,MAAM,GAAG,GAAG,IAAA,2BAAc,EAAC;QACzB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,IAAI,EAAE;YACJ,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,WAAW;SACrB;KACF,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACpC,MAAM,cAAc,GAAG,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAC5C,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;YACL,cAAc;YACd,OAAO,EAAE,GAAG;YACZ,MAAM;SACP,CAAA;IACH,CAAC;IACD,MAAM,KAAK,GAAG,IAAA,wBAAQ,EAAC,GAAG,CAAC,CAAA;IAC3B,YAAE,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACxC,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,CAAA;IACxD,IAAI,CAAC;QACH,gHAAgH;QAChH,2DAA2D;QAC3D,IAAA,iCAAU,EAAC;YACT,KAAK;YACL,GAAG,cAAc,IAAI,WAAW,EAAE;YAClC,kBAAkB;YAClB,yBAAyB;YACzB,mCAAmC;YACnC,wDAAwD;YACxD,yCAAyC;YACzC,8BAA8B;YAC9B,kBAAkB;SACnB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;QAClB,yDAAyD;QACzD,oFAAoF;QACpF,2BAA2B;QAC3B,+FAA+F;QAC/F,qBAAU,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,IAAA,aAAM,EAAC,KAAK,CAAC,CAAA;QACf,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC,CAAC,+BAA+B;QAC1C,MAAM,GAAG,CAAA;IACX,CAAC;IACD,OAAO;QACL,cAAc;QACd,OAAO,EAAE,GAAG;QACZ,MAAM;KACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"installPnpmToTools.js","sourceRoot":"","sources":["../src/installPnpmToTools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnpm/tools.plugin-commands-self-updater",
3
- "version": "1000.1.49",
3
+ "version": "1000.1.51",
4
4
  "description": "A command for updating pnpm itself",
5
5
  "keywords": [
6
6
  "pnpm",
@@ -28,17 +28,16 @@
28
28
  "path-temp": "^2.1.0",
29
29
  "ramda": "npm:@pnpm/ramda@0.28.1",
30
30
  "render-help": "^1.0.3",
31
- "semver": "^7.7.1",
32
31
  "symlink-dir": "^6.0.5",
32
+ "@pnpm/cli-meta": "1000.0.16",
33
+ "@pnpm/cli-utils": "1001.3.7",
34
+ "@pnpm/client": "1001.1.21",
35
+ "@pnpm/config": "1004.10.2",
33
36
  "@pnpm/exec.pnpm-cli-runner": "1000.0.1",
37
+ "@pnpm/link-bins": "1000.3.7",
34
38
  "@pnpm/error": "1000.0.5",
35
- "@pnpm/cli-utils": "1001.3.6",
36
- "@pnpm/link-bins": "1000.3.6",
37
- "@pnpm/cli-meta": "1000.0.16",
38
- "@pnpm/tools.path": "1000.0.0",
39
39
  "@pnpm/read-project-manifest": "1001.2.5",
40
- "@pnpm/config": "1004.10.2",
41
- "@pnpm/client": "1001.1.20"
40
+ "@pnpm/tools.path": "1000.0.0"
42
41
  },
43
42
  "peerDependencies": {
44
43
  "@pnpm/logger": ">=1001.0.0 <1002.0.0"
@@ -47,12 +46,11 @@
47
46
  "@jest/globals": "29.7.0",
48
47
  "@types/cross-spawn": "^6.0.6",
49
48
  "@types/ramda": "0.29.12",
50
- "@types/semver": "7.5.3",
51
49
  "cross-spawn": "^7.0.6",
52
50
  "nock": "13.3.4",
53
51
  "@pnpm/env.path": "1000.0.0",
54
52
  "@pnpm/prepare": "1000.0.15",
55
- "@pnpm/tools.plugin-commands-self-updater": "1000.1.49"
53
+ "@pnpm/tools.plugin-commands-self-updater": "1000.1.51"
56
54
  },
57
55
  "engines": {
58
56
  "node": ">=18.12"