@pnpm/plugin-commands-env 3.0.4 → 3.1.0

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.
package/lib/env.d.ts CHANGED
@@ -2,6 +2,7 @@ import { NvmNodeCommandOptions } from './node';
2
2
  export declare function rcOptionsTypes(): {};
3
3
  export declare function cliOptionsTypes(): {
4
4
  global: BooleanConstructor;
5
+ remote: BooleanConstructor;
5
6
  };
6
7
  export declare const commandNames: string[];
7
8
  export declare function help(): string;
package/lib/env.js CHANGED
@@ -4,20 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.handler = exports.help = exports.commandNames = exports.cliOptionsTypes = exports.rcOptionsTypes = void 0;
7
- const fs_1 = require("fs");
8
- const path_1 = __importDefault(require("path"));
9
7
  const cli_utils_1 = require("@pnpm/cli-utils");
10
8
  const error_1 = require("@pnpm/error");
11
- const fetch_1 = require("@pnpm/fetch");
12
- const node_resolver_1 = require("@pnpm/node.resolver");
13
- const logger_1 = require("@pnpm/logger");
14
- const remove_bins_1 = require("@pnpm/remove-bins");
15
- const cmd_shim_1 = __importDefault(require("@zkochan/cmd-shim"));
16
- const rimraf_1 = __importDefault(require("@zkochan/rimraf"));
17
9
  const render_help_1 = __importDefault(require("render-help"));
18
- const node_1 = require("./node");
19
- const getNodeMirror_1 = require("./getNodeMirror");
20
- const parseNodeEditionSpecifier_1 = require("./parseNodeEditionSpecifier");
10
+ const envRemove_1 = require("./envRemove");
11
+ const envUse_1 = require("./envUse");
12
+ const envList_1 = require("./envList");
21
13
  function rcOptionsTypes() {
22
14
  return {};
23
15
  }
@@ -25,6 +17,7 @@ exports.rcOptionsTypes = rcOptionsTypes;
25
17
  function cliOptionsTypes() {
26
18
  return {
27
19
  global: Boolean,
20
+ remote: Boolean,
28
21
  };
29
22
  }
30
23
  exports.cliOptionsTypes = cliOptionsTypes;
@@ -37,14 +30,19 @@ function help() {
37
30
  title: 'Commands',
38
31
  list: [
39
32
  {
40
- description: 'Installs the specified version of Node.JS. The npm CLI bundled with the given Node.js version gets installed as well.',
33
+ description: 'Installs the specified version of Node.js. The npm CLI bundled with the given Node.js version gets installed as well.',
41
34
  name: 'use',
42
35
  },
43
36
  {
44
- description: 'Removes the specified version of Node.JS.',
37
+ description: 'Removes the specified version of Node.js.',
45
38
  name: 'remove',
46
39
  shortAlias: 'rm',
47
40
  },
41
+ {
42
+ description: 'List Node.js versions available locally or remotely',
43
+ name: 'list',
44
+ shortAlias: 'ls',
45
+ },
48
46
  ],
49
47
  },
50
48
  {
@@ -55,6 +53,10 @@ function help() {
55
53
  name: '--global',
56
54
  shortAlias: '-g',
57
55
  },
56
+ {
57
+ description: 'List the remote versions of Node.js',
58
+ name: '--remote',
59
+ },
58
60
  ],
59
61
  },
60
62
  ],
@@ -71,6 +73,13 @@ function help() {
71
73
  'pnpm env remove --global argon',
72
74
  'pnpm env remove --global latest',
73
75
  'pnpm env remove --global rc/16',
76
+ 'pnpm env list',
77
+ 'pnpm env list --remote',
78
+ 'pnpm env list --remote 16',
79
+ 'pnpm env list --remote lts',
80
+ 'pnpm env list --remote argon',
81
+ 'pnpm env list --remote latest',
82
+ 'pnpm env list --remote rc/16',
74
83
  ],
75
84
  });
76
85
  }
@@ -81,96 +90,17 @@ async function handler(opts, params) {
81
90
  }
82
91
  switch (params[0]) {
83
92
  case 'use': {
84
- if (!opts.global) {
85
- throw new error_1.PnpmError('NOT_IMPLEMENTED_YET', '"pnpm env use <version>" can only be used with the "--global" option currently');
86
- }
87
- const fetch = (0, fetch_1.createFetchFromRegistry)(opts);
88
- const { releaseChannel, versionSpecifier } = (0, parseNodeEditionSpecifier_1.parseNodeEditionSpecifier)(params[1]);
89
- const nodeMirrorBaseUrl = (0, getNodeMirror_1.getNodeMirror)(opts.rawConfig, releaseChannel);
90
- const nodeVersion = await (0, node_resolver_1.resolveNodeVersion)(fetch, versionSpecifier, nodeMirrorBaseUrl);
91
- if (!nodeVersion) {
92
- throw new error_1.PnpmError('COULD_NOT_RESOLVE_NODEJS', `Couldn't find Node.js version matching ${params[1]}`);
93
- }
94
- const nodeDir = await (0, node_1.getNodeDir)(fetch, {
95
- ...opts,
96
- useNodeVersion: nodeVersion,
97
- nodeMirrorBaseUrl,
98
- });
99
- const src = path_1.default.join(nodeDir, process.platform === 'win32' ? 'node.exe' : 'bin/node');
100
- const dest = path_1.default.join(opts.bin, process.platform === 'win32' ? 'node.exe' : 'node');
101
- try {
102
- await fs_1.promises.unlink(dest);
103
- }
104
- catch (err) { }
105
- await fs_1.promises.symlink(src, dest, 'file');
106
- try {
107
- let npmDir = nodeDir;
108
- if (process.platform !== 'win32') {
109
- npmDir = path_1.default.join(npmDir, 'lib');
110
- }
111
- npmDir = path_1.default.join(npmDir, 'node_modules/npm');
112
- if (opts.configDir) {
113
- // We want the global npm settings to persist when Node.js or/and npm is changed to a different version,
114
- // so we tell npm to read the global config from centralized place that is outside of npm's directory.
115
- await fs_1.promises.writeFile(path_1.default.join(npmDir, 'npmrc'), `globalconfig=${path_1.default.join(opts.configDir, 'npmrc')}`, 'utf-8');
116
- }
117
- const npmBinDir = path_1.default.join(npmDir, 'bin');
118
- const cmdShimOpts = { createPwshFile: false };
119
- await (0, cmd_shim_1.default)(path_1.default.join(npmBinDir, 'npm-cli.js'), path_1.default.join(opts.bin, 'npm'), cmdShimOpts);
120
- await (0, cmd_shim_1.default)(path_1.default.join(npmBinDir, 'npx-cli.js'), path_1.default.join(opts.bin, 'npx'), cmdShimOpts);
121
- }
122
- catch (err) { // eslint-disable-line
123
- // ignore
124
- }
125
- return `Node.js ${nodeVersion} is activated
126
- ${dest} -> ${src}`;
93
+ return (0, envUse_1.envUse)(opts, params.slice(1));
127
94
  }
128
95
  case 'remove':
129
96
  case 'rm':
130
97
  case 'uninstall':
131
98
  case 'un': {
132
- if (!opts.global) {
133
- throw new error_1.PnpmError('NOT_IMPLEMENTED_YET', '"pnpm env use <version>" can only be used with the "--global" option currently');
134
- }
135
- const fetch = (0, fetch_1.createFetchFromRegistry)(opts);
136
- const { releaseChannel, versionSpecifier } = (0, parseNodeEditionSpecifier_1.parseNodeEditionSpecifier)(params[1]);
137
- const nodeMirrorBaseUrl = (0, getNodeMirror_1.getNodeMirror)(opts.rawConfig, releaseChannel);
138
- const nodeVersion = await (0, node_resolver_1.resolveNodeVersion)(fetch, versionSpecifier, nodeMirrorBaseUrl);
139
- const nodeDir = (0, node_1.getNodeVersionsBaseDir)(opts.pnpmHomeDir);
140
- if (!nodeVersion) {
141
- throw new error_1.PnpmError('COULD_NOT_RESOLVE_NODEJS', `Couldn't find Node.js version matching ${params[1]}`);
142
- }
143
- const versionDir = path_1.default.resolve(nodeDir, nodeVersion);
144
- if (!(0, fs_1.existsSync)(versionDir)) {
145
- throw new error_1.PnpmError('ENV_NO_NODE_DIRECTORY', `Couldn't find Node.js directory in ${versionDir}`);
146
- }
147
- const nodePath = path_1.default.resolve(opts.pnpmHomeDir, process.platform === 'win32' ? 'node.exe' : 'node');
148
- let nodeLink;
149
- try {
150
- nodeLink = await fs_1.promises.readlink(nodePath);
151
- }
152
- catch (err) {
153
- nodeLink = undefined;
154
- }
155
- if (nodeLink?.includes(versionDir)) {
156
- (0, logger_1.globalInfo)(`Node.JS version ${nodeVersion} was detected as the default one, removing ...`);
157
- const npmPath = path_1.default.resolve(opts.pnpmHomeDir, 'npm');
158
- const npxPath = path_1.default.resolve(opts.pnpmHomeDir, 'npx');
159
- try {
160
- await Promise.all([
161
- (0, remove_bins_1.removeBin)(nodePath),
162
- (0, remove_bins_1.removeBin)(npmPath),
163
- (0, remove_bins_1.removeBin)(npxPath),
164
- ]);
165
- }
166
- catch (err) { // eslint-disable-line
167
- if (err.code !== 'ENOENT')
168
- throw err;
169
- }
170
- }
171
- await (0, rimraf_1.default)(versionDir);
172
- return `Node.js ${nodeVersion} is removed
173
- ${versionDir}`;
99
+ return (0, envRemove_1.envRemove)(opts, params.slice(1));
100
+ }
101
+ case 'list':
102
+ case 'ls': {
103
+ return (0, envList_1.envList)(opts, params.slice(1));
174
104
  }
175
105
  default: {
176
106
  throw new error_1.PnpmError('ENV_UNKNOWN_SUBCOMMAND', 'This subcommand is not known');
package/lib/env.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":";;;;;;AAAA,+CAAyC;AACzC,uCAAuC;AACvC,8DAAoC;AACpC,2CAAuC;AACvC,qCAAiC;AAEjC,uCAAmC;AAEnC,SAAgB,cAAc;IAC5B,OAAO,EAAE,CAAA;AACX,CAAC;AAFD,wCAEC;AAED,SAAgB,eAAe;IAC7B,OAAO;QACL,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,OAAO;KAChB,CAAA;AACH,CAAC;AALD,0CAKC;AAEY,QAAA,YAAY,GAAG,CAAC,KAAK,CAAC,CAAA;AAEnC,SAAgB,IAAI;IAClB,OAAO,IAAA,qBAAU,EAAC;QAChB,WAAW,EAAE,0BAA0B;QACvC,gBAAgB,EAAE;YAChB;gBACE,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE;oBACJ;wBACE,WAAW,EAAE,uHAAuH;wBACpI,IAAI,EAAE,KAAK;qBACZ;oBACD;wBACE,WAAW,EAAE,2CAA2C;wBACxD,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,IAAI;qBACjB;oBACD;wBACE,WAAW,EAAE,qDAAqD;wBAClE,IAAI,EAAE,MAAM;wBACZ,UAAU,EAAE,IAAI;qBACjB;iBACF;aACF;YACD;gBACE,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE;oBACJ;wBACE,WAAW,EAAE,mCAAmC;wBAChD,IAAI,EAAE,UAAU;wBAChB,UAAU,EAAE,IAAI;qBACjB;oBACD;wBACE,WAAW,EAAE,qCAAqC;wBAClD,IAAI,EAAE,UAAU;qBACjB;iBACF;aACF;SACF;QACD,GAAG,EAAE,IAAA,mBAAO,EAAC,KAAK,CAAC;QACnB,MAAM,EAAE;YACN,wCAAwC;YACxC,0BAA0B;YAC1B,2BAA2B;YAC3B,6BAA6B;YAC7B,8BAA8B;YAC9B,6BAA6B;YAC7B,6BAA6B;YAC7B,8BAA8B;YAC9B,gCAAgC;YAChC,iCAAiC;YACjC,gCAAgC;YAChC,eAAe;YACf,wBAAwB;YACxB,2BAA2B;YAC3B,4BAA4B;YAC5B,8BAA8B;YAC9B,+BAA+B;YAC/B,8BAA8B;SAC/B;KACF,CAAC,CAAA;AACJ,CAAC;AA5DD,oBA4DC;AAEM,KAAK,UAAU,OAAO,CAAE,IAA2B,EAAE,MAAgB;IAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,MAAM,IAAI,iBAAS,CAAC,mBAAmB,EAAE,+BAA+B,CAAC,CAAA;KAC1E;IACD,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE;QACnB,KAAK,KAAK,CAAC,CAAC;YACV,OAAO,IAAA,eAAM,EAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;SACrC;QACD,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,IAAA,qBAAS,EAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;SACxC;QACD,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,IAAA,iBAAO,EAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;SACtC;QACD,OAAO,CAAC,CAAC;YACP,MAAM,IAAI,iBAAS,CAAC,wBAAwB,EAAE,8BAA8B,CAAC,CAAA;SAC9E;KACA;AACH,CAAC;AAtBD,0BAsBC"}
@@ -0,0 +1,2 @@
1
+ import { NvmNodeCommandOptions } from './node';
2
+ export declare function envList(opts: NvmNodeCommandOptions, params: string[]): Promise<string>;
package/lib/envList.js ADDED
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.envList = void 0;
7
+ const fs_1 = require("fs");
8
+ const path_1 = __importDefault(require("path"));
9
+ const fetch_1 = require("@pnpm/fetch");
10
+ const node_resolver_1 = require("@pnpm/node.resolver");
11
+ const error_1 = require("@pnpm/error");
12
+ const semver_1 = __importDefault(require("semver"));
13
+ const getNodeMirror_1 = require("./getNodeMirror");
14
+ const node_1 = require("./node");
15
+ const parseNodeEditionSpecifier_1 = require("./parseNodeEditionSpecifier");
16
+ const utils_1 = require("./utils");
17
+ async function envList(opts, params) {
18
+ if (opts.remote) {
19
+ const nodeVersionList = await listRemoteVersions(opts, params[0]);
20
+ // Make the newest version located in the end of output
21
+ return nodeVersionList.reverse().join('\n');
22
+ }
23
+ const { currentVersion, versions } = await listLocalVersions(opts);
24
+ return versions
25
+ .map(nodeVersion => `${nodeVersion === currentVersion ? '*' : ' '} ${nodeVersion}`)
26
+ .join('\n');
27
+ }
28
+ exports.envList = envList;
29
+ async function listLocalVersions(opts) {
30
+ const nodeBaseDir = (0, node_1.getNodeVersionsBaseDir)(opts.pnpmHomeDir);
31
+ if (!(0, fs_1.existsSync)(nodeBaseDir)) {
32
+ throw new error_1.PnpmError('ENV_NO_NODE_DIRECTORY', `Couldn't find Node.js directory in ${nodeBaseDir}`);
33
+ }
34
+ const { nodeLink } = await (0, utils_1.getNodeExecPathAndTargetDir)(opts.pnpmHomeDir);
35
+ const nodeVersionDirs = await fs_1.promises.readdir(nodeBaseDir);
36
+ return nodeVersionDirs.reduce(({ currentVersion, versions }, nodeVersion) => {
37
+ const nodeVersionDir = path_1.default.join(nodeBaseDir, nodeVersion);
38
+ const nodeExec = (0, utils_1.getNodeExecPathInNodeDir)(nodeVersionDir);
39
+ if (nodeLink?.startsWith(nodeVersionDir)) {
40
+ currentVersion = nodeVersion;
41
+ }
42
+ if (semver_1.default.valid(nodeVersion) && (0, fs_1.existsSync)(nodeExec)) {
43
+ versions.push(nodeVersion);
44
+ }
45
+ return { currentVersion, versions };
46
+ }, { currentVersion: undefined, versions: [] });
47
+ }
48
+ async function listRemoteVersions(opts, versionSpec) {
49
+ const fetch = (0, fetch_1.createFetchFromRegistry)(opts);
50
+ const { releaseChannel, versionSpecifier } = (0, parseNodeEditionSpecifier_1.parseNodeEditionSpecifier)(versionSpec ?? '');
51
+ const nodeMirrorBaseUrl = (0, getNodeMirror_1.getNodeMirror)(opts.rawConfig, releaseChannel);
52
+ const nodeVersionList = await (0, node_resolver_1.resolveNodeVersions)(fetch, versionSpecifier, nodeMirrorBaseUrl);
53
+ return nodeVersionList;
54
+ }
55
+ //# sourceMappingURL=envList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envList.js","sourceRoot":"","sources":["../src/envList.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA+C;AAC/C,gDAAuB;AACvB,uCAAqD;AACrD,uDAAyD;AACzD,uCAAuC;AACvC,oDAA2B;AAC3B,mDAA+C;AAC/C,iCAAsE;AACtE,2EAAuE;AACvE,mCAA+E;AAExE,KAAK,UAAU,OAAO,CAAE,IAA2B,EAAE,MAAgB;IAC1E,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACjE,uDAAuD;QACvD,OAAO,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KAC5C;IACD,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAClE,OAAO,QAAQ;SACZ,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,WAAW,KAAK,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC;SAClF,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAVD,0BAUC;AAED,KAAK,UAAU,iBAAiB,CAAE,IAA2B;IAC3D,MAAM,WAAW,GAAG,IAAA,6BAAsB,EAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC5D,IAAI,CAAC,IAAA,eAAU,EAAC,WAAW,CAAC,EAAE;QAC5B,MAAM,IAAI,iBAAS,CAAC,uBAAuB,EAAE,sCAAsC,WAAW,EAAE,CAAC,CAAA;KAClG;IACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACxE,MAAM,eAAe,GAAG,MAAM,aAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IACrD,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE;QAC1E,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;QAC1D,MAAM,QAAQ,GAAG,IAAA,gCAAwB,EAAC,cAAc,CAAC,CAAA;QACzD,IAAI,QAAQ,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE;YACxC,cAAc,GAAG,WAAW,CAAA;SAC7B;QACD,IAAI,gBAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE;YACrD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;SAC3B;QACD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAA;IACrC,CAAC,EAAE,EAAE,cAAc,EAAE,SAA+B,EAAE,QAAQ,EAAE,EAAc,EAAE,CAAC,CAAA;AACnF,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAE,IAA2B,EAAE,WAAoB;IAClF,MAAM,KAAK,GAAG,IAAA,+BAAuB,EAAC,IAAI,CAAC,CAAA;IAC3C,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,IAAA,qDAAyB,EAAC,WAAW,IAAI,EAAE,CAAC,CAAA;IACzF,MAAM,iBAAiB,GAAG,IAAA,6BAAa,EAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IACvE,MAAM,eAAe,GAAG,MAAM,IAAA,mCAAmB,EAAC,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;IAC7F,OAAO,eAAe,CAAA;AACxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { NvmNodeCommandOptions } from './node';
2
+ export declare function envRemove(opts: NvmNodeCommandOptions, params: string[]): Promise<string>;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.envRemove = void 0;
7
+ const fs_1 = require("fs");
8
+ const path_1 = __importDefault(require("path"));
9
+ const error_1 = require("@pnpm/error");
10
+ const fetch_1 = require("@pnpm/fetch");
11
+ const logger_1 = require("@pnpm/logger");
12
+ const node_resolver_1 = require("@pnpm/node.resolver");
13
+ const remove_bins_1 = require("@pnpm/remove-bins");
14
+ const rimraf_1 = __importDefault(require("@zkochan/rimraf"));
15
+ const parseNodeEditionSpecifier_1 = require("./parseNodeEditionSpecifier");
16
+ const utils_1 = require("./utils");
17
+ const getNodeMirror_1 = require("./getNodeMirror");
18
+ const node_1 = require("./node");
19
+ async function envRemove(opts, params) {
20
+ if (!opts.global) {
21
+ throw new error_1.PnpmError('NOT_IMPLEMENTED_YET', '"pnpm env use <version>" can only be used with the "--global" option currently');
22
+ }
23
+ const fetch = (0, fetch_1.createFetchFromRegistry)(opts);
24
+ const { releaseChannel, versionSpecifier } = (0, parseNodeEditionSpecifier_1.parseNodeEditionSpecifier)(params[0]);
25
+ const nodeMirrorBaseUrl = (0, getNodeMirror_1.getNodeMirror)(opts.rawConfig, releaseChannel);
26
+ const nodeVersion = await (0, node_resolver_1.resolveNodeVersion)(fetch, versionSpecifier, nodeMirrorBaseUrl);
27
+ const nodeDir = (0, node_1.getNodeVersionsBaseDir)(opts.pnpmHomeDir);
28
+ if (!nodeVersion) {
29
+ throw new error_1.PnpmError('COULD_NOT_RESOLVE_NODEJS', `Couldn't find Node.js version matching ${params[0]}`);
30
+ }
31
+ const versionDir = path_1.default.resolve(nodeDir, nodeVersion);
32
+ if (!(0, fs_1.existsSync)(versionDir)) {
33
+ throw new error_1.PnpmError('ENV_NO_NODE_DIRECTORY', `Couldn't find Node.js directory in ${versionDir}`);
34
+ }
35
+ const { nodePath, nodeLink } = await (0, utils_1.getNodeExecPathAndTargetDir)(opts.pnpmHomeDir);
36
+ if (nodeLink?.includes(versionDir)) {
37
+ (0, logger_1.globalInfo)(`Node.js version ${nodeVersion} was detected as the default one, removing ...`);
38
+ const npmPath = path_1.default.resolve(opts.pnpmHomeDir, 'npm');
39
+ const npxPath = path_1.default.resolve(opts.pnpmHomeDir, 'npx');
40
+ try {
41
+ await Promise.all([
42
+ (0, remove_bins_1.removeBin)(nodePath),
43
+ (0, remove_bins_1.removeBin)(npmPath),
44
+ (0, remove_bins_1.removeBin)(npxPath),
45
+ ]);
46
+ }
47
+ catch (err) { // eslint-disable-line
48
+ if (err.code !== 'ENOENT')
49
+ throw err;
50
+ }
51
+ }
52
+ await (0, rimraf_1.default)(versionDir);
53
+ return `Node.js ${nodeVersion} is removed
54
+ ${versionDir}`;
55
+ }
56
+ exports.envRemove = envRemove;
57
+ //# sourceMappingURL=envRemove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envRemove.js","sourceRoot":"","sources":["../src/envRemove.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA+B;AAC/B,gDAAuB;AACvB,uCAAuC;AACvC,uCAAqD;AACrD,yCAAyC;AACzC,uDAAwD;AACxD,mDAA6C;AAC7C,6DAAoC;AACpC,2EAAuE;AACvE,mCAAqD;AACrD,mDAA+C;AAC/C,iCAAsE;AAE/D,KAAK,UAAU,SAAS,CAAE,IAA2B,EAAE,MAAgB;IAC5E,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAChB,MAAM,IAAI,iBAAS,CAAC,qBAAqB,EAAE,gFAAgF,CAAC,CAAA;KAC7H;IAED,MAAM,KAAK,GAAG,IAAA,+BAAuB,EAAC,IAAI,CAAC,CAAA;IAC3C,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,IAAA,qDAAyB,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACjF,MAAM,iBAAiB,GAAG,IAAA,6BAAa,EAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IACvE,MAAM,WAAW,GAAG,MAAM,IAAA,kCAAkB,EAAC,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;IACxF,MAAM,OAAO,GAAG,IAAA,6BAAsB,EAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAExD,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,iBAAS,CAAC,0BAA0B,EAAE,0CAA0C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;KACvG;IAED,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAErD,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE;QAC3B,MAAM,IAAI,iBAAS,CAAC,uBAAuB,EAAE,sCAAsC,UAAU,EAAE,CAAC,CAAA;KACjG;IAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAElF,IAAI,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;QAClC,IAAA,mBAAU,EAAC,mBAAmB,WAAqB,gDAAgD,CAAC,CAAA;QAEpG,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;QACrD,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;QAErD,IAAI;YACF,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAA,uBAAS,EAAC,QAAQ,CAAC;gBACnB,IAAA,uBAAS,EAAC,OAAO,CAAC;gBAClB,IAAA,uBAAS,EAAC,OAAO,CAAC;aACnB,CAAC,CAAA;SACH;QAAC,OAAO,GAAQ,EAAE,EAAE,sBAAsB;YACzC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,GAAG,CAAA;SACrC;KACF;IAED,MAAM,IAAA,gBAAM,EAAC,UAAU,CAAC,CAAA;IAExB,OAAO,WAAW,WAAqB;EACvC,UAAU,EAAE,CAAA;AACd,CAAC;AA5CD,8BA4CC"}
@@ -0,0 +1,2 @@
1
+ import { NvmNodeCommandOptions } from './node';
2
+ export declare function envUse(opts: NvmNodeCommandOptions, params: string[]): Promise<string>;
package/lib/envUse.js ADDED
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.envUse = void 0;
7
+ const fs_1 = require("fs");
8
+ const path_1 = __importDefault(require("path"));
9
+ const error_1 = require("@pnpm/error");
10
+ const fetch_1 = require("@pnpm/fetch");
11
+ const node_resolver_1 = require("@pnpm/node.resolver");
12
+ const cmd_shim_1 = __importDefault(require("@zkochan/cmd-shim"));
13
+ const node_1 = require("./node");
14
+ const getNodeMirror_1 = require("./getNodeMirror");
15
+ const parseNodeEditionSpecifier_1 = require("./parseNodeEditionSpecifier");
16
+ const utils_1 = require("./utils");
17
+ async function envUse(opts, params) {
18
+ if (!opts.global) {
19
+ throw new error_1.PnpmError('NOT_IMPLEMENTED_YET', '"pnpm env use <version>" can only be used with the "--global" option currently');
20
+ }
21
+ const fetch = (0, fetch_1.createFetchFromRegistry)(opts);
22
+ const { releaseChannel, versionSpecifier } = (0, parseNodeEditionSpecifier_1.parseNodeEditionSpecifier)(params[0]);
23
+ const nodeMirrorBaseUrl = (0, getNodeMirror_1.getNodeMirror)(opts.rawConfig, releaseChannel);
24
+ const nodeVersion = await (0, node_resolver_1.resolveNodeVersion)(fetch, versionSpecifier, nodeMirrorBaseUrl);
25
+ if (!nodeVersion) {
26
+ throw new error_1.PnpmError('COULD_NOT_RESOLVE_NODEJS', `Couldn't find Node.js version matching ${params[0]}`);
27
+ }
28
+ const nodeDir = await (0, node_1.getNodeDir)(fetch, {
29
+ ...opts,
30
+ useNodeVersion: nodeVersion,
31
+ nodeMirrorBaseUrl,
32
+ });
33
+ const src = (0, utils_1.getNodeExecPathInNodeDir)(nodeDir);
34
+ const dest = (0, utils_1.getNodeExecPathInBinDir)(opts.bin);
35
+ try {
36
+ await fs_1.promises.unlink(dest);
37
+ }
38
+ catch (err) { }
39
+ await fs_1.promises.symlink(src, dest, 'file');
40
+ try {
41
+ let npmDir = nodeDir;
42
+ if (process.platform !== 'win32') {
43
+ npmDir = path_1.default.join(npmDir, 'lib');
44
+ }
45
+ npmDir = path_1.default.join(npmDir, 'node_modules/npm');
46
+ if (opts.configDir) {
47
+ // We want the global npm settings to persist when Node.js or/and npm is changed to a different version,
48
+ // so we tell npm to read the global config from centralized place that is outside of npm's directory.
49
+ await fs_1.promises.writeFile(path_1.default.join(npmDir, 'npmrc'), `globalconfig=${path_1.default.join(opts.configDir, 'npmrc')}`, 'utf-8');
50
+ }
51
+ const npmBinDir = path_1.default.join(npmDir, 'bin');
52
+ const cmdShimOpts = { createPwshFile: false };
53
+ await (0, cmd_shim_1.default)(path_1.default.join(npmBinDir, 'npm-cli.js'), path_1.default.join(opts.bin, 'npm'), cmdShimOpts);
54
+ await (0, cmd_shim_1.default)(path_1.default.join(npmBinDir, 'npx-cli.js'), path_1.default.join(opts.bin, 'npx'), cmdShimOpts);
55
+ }
56
+ catch (err) { // eslint-disable-line
57
+ // ignore
58
+ }
59
+ return `Node.js ${nodeVersion} is activated
60
+ ${dest} -> ${src}`;
61
+ }
62
+ exports.envUse = envUse;
63
+ //# sourceMappingURL=envUse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envUse.js","sourceRoot":"","sources":["../src/envUse.ts"],"names":[],"mappings":"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"}
package/lib/node.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import { Config } from '@pnpm/config';
2
2
  import { FetchFromRegistry } from '@pnpm/fetch';
3
- export declare type NvmNodeCommandOptions = Pick<Config, 'bin' | 'global' | 'fetchRetries' | 'fetchRetryFactor' | 'fetchRetryMaxtimeout' | 'fetchRetryMintimeout' | 'fetchTimeout' | 'userAgent' | 'ca' | 'cert' | 'httpProxy' | 'httpsProxy' | 'key' | 'localAddress' | 'noProxy' | 'rawConfig' | 'strictSsl' | 'storeDir' | 'useNodeVersion' | 'pnpmHomeDir'> & Partial<Pick<Config, 'configDir'>>;
3
+ export declare type NvmNodeCommandOptions = Pick<Config, 'bin' | 'global' | 'fetchRetries' | 'fetchRetryFactor' | 'fetchRetryMaxtimeout' | 'fetchRetryMintimeout' | 'fetchTimeout' | 'userAgent' | 'ca' | 'cert' | 'httpProxy' | 'httpsProxy' | 'key' | 'localAddress' | 'noProxy' | 'rawConfig' | 'strictSsl' | 'storeDir' | 'useNodeVersion' | 'pnpmHomeDir'> & Partial<Pick<Config, 'configDir' | 'cliOptions'>> & {
4
+ remote?: boolean;
5
+ };
4
6
  export declare function getNodeBinDir(opts: NvmNodeCommandOptions): Promise<string>;
5
7
  export declare function getNodeVersionsBaseDir(pnpmHomeDir: string): string;
6
8
  export declare function getNodeDir(fetch: FetchFromRegistry, opts: NvmNodeCommandOptions & {
package/lib/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
package/lib/utils.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export declare function getNodeExecPathAndTargetDir(pnpmHomeDir: string): Promise<{
2
+ nodePath: string;
3
+ nodeLink: string | undefined;
4
+ }>;
5
+ export declare function getNodeExecPathInBinDir(pnpmHomeDir: string): string;
6
+ export declare function getNodeExecPathInNodeDir(nodeDir: string): string;
package/lib/utils.js ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getNodeExecPathInNodeDir = exports.getNodeExecPathInBinDir = exports.getNodeExecPathAndTargetDir = void 0;
7
+ const fs_1 = require("fs");
8
+ const path_1 = __importDefault(require("path"));
9
+ async function getNodeExecPathAndTargetDir(pnpmHomeDir) {
10
+ const nodePath = getNodeExecPathInBinDir(pnpmHomeDir);
11
+ let nodeLink;
12
+ try {
13
+ nodeLink = await fs_1.promises.readlink(nodePath);
14
+ }
15
+ catch (err) {
16
+ nodeLink = undefined;
17
+ }
18
+ return { nodePath, nodeLink };
19
+ }
20
+ exports.getNodeExecPathAndTargetDir = getNodeExecPathAndTargetDir;
21
+ function getNodeExecPathInBinDir(pnpmHomeDir) {
22
+ return path_1.default.resolve(pnpmHomeDir, process.platform === 'win32' ? 'node.exe' : 'node');
23
+ }
24
+ exports.getNodeExecPathInBinDir = getNodeExecPathInBinDir;
25
+ function getNodeExecPathInNodeDir(nodeDir) {
26
+ return path_1.default.join(nodeDir, process.platform === 'win32' ? 'node.exe' : 'bin/node');
27
+ }
28
+ exports.getNodeExecPathInNodeDir = getNodeExecPathInNodeDir;
29
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AAAA,2BAAmC;AACnC,gDAAuB;AAEhB,KAAK,UAAU,2BAA2B,CAAE,WAAmB;IACpE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAA;IACrD,IAAI,QAA4B,CAAA;IAChC,IAAI;QACF,QAAQ,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;KACvC;IAAC,OAAO,GAAG,EAAE;QACZ,QAAQ,GAAG,SAAS,CAAA;KACrB;IACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AAC/B,CAAC;AATD,kEASC;AAED,SAAgB,uBAAuB,CAAE,WAAmB;IAC1D,OAAO,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AACtF,CAAC;AAFD,0DAEC;AAED,SAAgB,wBAAwB,CAAE,OAAe;IACvD,OAAO,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;AACnF,CAAC;AAFD,4DAEC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnpm/plugin-commands-env",
3
- "version": "3.0.4",
3
+ "version": "3.1.0",
4
4
  "description": "pnpm commands for managing Node.js",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -23,26 +23,28 @@
23
23
  },
24
24
  "homepage": "https://github.com/pnpm/pnpm/blob/main/packages/plugin-commands-env#readme",
25
25
  "dependencies": {
26
- "@pnpm/cli-utils": "1.0.4",
27
- "@pnpm/config": "16.0.4",
26
+ "@pnpm/cli-utils": "1.0.6",
27
+ "@pnpm/config": "16.1.0",
28
28
  "@pnpm/error": "4.0.0",
29
- "@pnpm/fetch": "6.0.2",
29
+ "@pnpm/fetch": "6.0.3",
30
30
  "@pnpm/logger": "^5.0.0",
31
- "@pnpm/node.fetcher": "2.0.2",
32
- "@pnpm/node.resolver": "1.0.18",
33
- "@pnpm/remove-bins": "4.0.1",
31
+ "@pnpm/node.fetcher": "2.0.3",
32
+ "@pnpm/node.resolver": "1.1.0",
33
+ "@pnpm/remove-bins": "4.0.2",
34
34
  "@pnpm/store-path": "7.0.0",
35
35
  "@zkochan/cmd-shim": "^5.3.1",
36
36
  "@zkochan/rimraf": "^2.1.2",
37
37
  "load-json-file": "^6.2.0",
38
38
  "render-help": "^1.0.2",
39
+ "semver": "^7.3.8",
39
40
  "write-json-file": "^4.3.0"
40
41
  },
41
42
  "funding": "https://opencollective.com/pnpm",
42
43
  "devDependencies": {
43
- "@pnpm/plugin-commands-env": "3.0.4",
44
- "@pnpm/prepare": "0.0.56",
44
+ "@pnpm/plugin-commands-env": "3.1.0",
45
+ "@pnpm/prepare": "0.0.57",
45
46
  "@types/adm-zip": "^0.4.34",
47
+ "@types/semver": "7.3.13",
46
48
  "adm-zip": "^0.5.9",
47
49
  "execa": "npm:safe-execa@^0.1.2",
48
50
  "nock": "13.2.9",