@storybook/cli 7.0.0-beta.60 → 7.0.0-beta.61
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/dist/chunk-HBVTX4IN.mjs +1239 -0
- package/dist/{chunk-T3OUNNBL.mjs → chunk-ZKUAYCCT.mjs} +1 -1
- package/dist/generate.js +5535 -208
- package/dist/generate.mjs +4304 -193
- package/dist/index.js +845 -10
- package/dist/index.mjs +12 -1
- package/package.json +10 -10
package/dist/index.js
CHANGED
|
@@ -1,10 +1,845 @@
|
|
|
1
|
-
var __create
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/index.ts
|
|
30
|
+
var src_exports = {};
|
|
31
|
+
__export(src_exports, {
|
|
32
|
+
JsPackageManager: () => JsPackageManager,
|
|
33
|
+
JsPackageManagerFactory: () => JsPackageManagerFactory,
|
|
34
|
+
getPackageDetails: () => getPackageDetails,
|
|
35
|
+
useNpmWarning: () => useNpmWarning
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(src_exports);
|
|
38
|
+
|
|
39
|
+
// src/js-package-manager/deprecations.ts
|
|
40
|
+
var import_util_deprecate = __toESM(require("util-deprecate"));
|
|
41
|
+
var useNpmWarning = (0, import_util_deprecate.default)(
|
|
42
|
+
() => {
|
|
43
|
+
},
|
|
44
|
+
`\`--use-npm\` is deprecated and will be removed in Storybook 8.0.
|
|
45
|
+
Please use the \`--package-manager=npm\` option instead.
|
|
46
|
+
Read more at https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#cli-option---use-npm-deprecated`
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
// src/js-package-manager/JsPackageManagerFactory.ts
|
|
50
|
+
var import_node_path = __toESM(require("path"));
|
|
51
|
+
var import_cross_spawn2 = require("cross-spawn");
|
|
52
|
+
var import_find_up = require("find-up");
|
|
53
|
+
|
|
54
|
+
// src/js-package-manager/JsPackageManager.ts
|
|
55
|
+
var import_chalk2 = __toESM(require("chalk"));
|
|
56
|
+
var import_semver3 = require("semver");
|
|
57
|
+
var import_cross_spawn = require("cross-spawn");
|
|
58
|
+
var import_path = __toESM(require("path"));
|
|
59
|
+
var import_fs = __toESM(require("fs"));
|
|
60
|
+
|
|
61
|
+
// src/helpers.ts
|
|
62
|
+
var import_fs_extra = __toESM(require("fs-extra"));
|
|
63
|
+
var import_chalk = __toESM(require("chalk"));
|
|
64
|
+
var import_semver2 = require("semver");
|
|
65
|
+
var import_strip_json_comments = __toESM(require("strip-json-comments"));
|
|
66
|
+
|
|
67
|
+
// src/dirs.ts
|
|
68
|
+
var import_get_tarball = __toESM(require("@ndelangen/get-tarball"));
|
|
69
|
+
var import_get_npm_tarball_url = __toESM(require("get-npm-tarball-url"));
|
|
70
|
+
var tempy = __toESM(require("tempy"));
|
|
71
|
+
|
|
72
|
+
// src/project_types.ts
|
|
73
|
+
var import_semver = require("semver");
|
|
74
|
+
var ProjectType = /* @__PURE__ */ ((ProjectType2) => {
|
|
75
|
+
ProjectType2["UNDETECTED"] = "UNDETECTED";
|
|
76
|
+
ProjectType2["UNSUPPORTED"] = "UNSUPPORTED";
|
|
77
|
+
ProjectType2["REACT_SCRIPTS"] = "REACT_SCRIPTS";
|
|
78
|
+
ProjectType2["REACT"] = "REACT";
|
|
79
|
+
ProjectType2["REACT_NATIVE"] = "REACT_NATIVE";
|
|
80
|
+
ProjectType2["REACT_PROJECT"] = "REACT_PROJECT";
|
|
81
|
+
ProjectType2["WEBPACK_REACT"] = "WEBPACK_REACT";
|
|
82
|
+
ProjectType2["NEXTJS"] = "NEXTJS";
|
|
83
|
+
ProjectType2["VUE"] = "VUE";
|
|
84
|
+
ProjectType2["VUE3"] = "VUE3";
|
|
85
|
+
ProjectType2["SFC_VUE"] = "SFC_VUE";
|
|
86
|
+
ProjectType2["ANGULAR"] = "ANGULAR";
|
|
87
|
+
ProjectType2["EMBER"] = "EMBER";
|
|
88
|
+
ProjectType2["WEB_COMPONENTS"] = "WEB_COMPONENTS";
|
|
89
|
+
ProjectType2["MITHRIL"] = "MITHRIL";
|
|
90
|
+
ProjectType2["MARIONETTE"] = "MARIONETTE";
|
|
91
|
+
ProjectType2["MARKO"] = "MARKO";
|
|
92
|
+
ProjectType2["HTML"] = "HTML";
|
|
93
|
+
ProjectType2["QWIK"] = "QWIK";
|
|
94
|
+
ProjectType2["RIOT"] = "RIOT";
|
|
95
|
+
ProjectType2["PREACT"] = "PREACT";
|
|
96
|
+
ProjectType2["SVELTE"] = "SVELTE";
|
|
97
|
+
ProjectType2["SVELTEKIT"] = "SVELTEKIT";
|
|
98
|
+
ProjectType2["RAX"] = "RAX";
|
|
99
|
+
ProjectType2["AURELIA"] = "AURELIA";
|
|
100
|
+
ProjectType2["SERVER"] = "SERVER";
|
|
101
|
+
ProjectType2["NX"] = "NX";
|
|
102
|
+
ProjectType2["SOLID"] = "SOLID";
|
|
103
|
+
return ProjectType2;
|
|
104
|
+
})(ProjectType || {});
|
|
105
|
+
var notInstallableProjectTypes = ["UNDETECTED" /* UNDETECTED */, "UNSUPPORTED" /* UNSUPPORTED */];
|
|
106
|
+
var installableProjectTypes = Object.values(ProjectType).filter((type) => !notInstallableProjectTypes.includes(type)).map((type) => type.toLowerCase());
|
|
107
|
+
|
|
108
|
+
// src/versions.ts
|
|
109
|
+
var versions_default = {
|
|
110
|
+
"@storybook/addon-a11y": "7.0.0-beta.61",
|
|
111
|
+
"@storybook/addon-actions": "7.0.0-beta.61",
|
|
112
|
+
"@storybook/addon-backgrounds": "7.0.0-beta.61",
|
|
113
|
+
"@storybook/addon-controls": "7.0.0-beta.61",
|
|
114
|
+
"@storybook/addon-docs": "7.0.0-beta.61",
|
|
115
|
+
"@storybook/addon-essentials": "7.0.0-beta.61",
|
|
116
|
+
"@storybook/addon-highlight": "7.0.0-beta.61",
|
|
117
|
+
"@storybook/addon-interactions": "7.0.0-beta.61",
|
|
118
|
+
"@storybook/addon-jest": "7.0.0-beta.61",
|
|
119
|
+
"@storybook/addon-links": "7.0.0-beta.61",
|
|
120
|
+
"@storybook/addon-measure": "7.0.0-beta.61",
|
|
121
|
+
"@storybook/addon-outline": "7.0.0-beta.61",
|
|
122
|
+
"@storybook/addon-storyshots": "7.0.0-beta.61",
|
|
123
|
+
"@storybook/addon-storyshots-puppeteer": "7.0.0-beta.61",
|
|
124
|
+
"@storybook/addon-storysource": "7.0.0-beta.61",
|
|
125
|
+
"@storybook/addon-toolbars": "7.0.0-beta.61",
|
|
126
|
+
"@storybook/addon-viewport": "7.0.0-beta.61",
|
|
127
|
+
"@storybook/addons": "7.0.0-beta.61",
|
|
128
|
+
"@storybook/angular": "7.0.0-beta.61",
|
|
129
|
+
"@storybook/api": "7.0.0-beta.61",
|
|
130
|
+
"@storybook/builder-manager": "7.0.0-beta.61",
|
|
131
|
+
"@storybook/builder-vite": "7.0.0-beta.61",
|
|
132
|
+
"@storybook/builder-webpack5": "7.0.0-beta.61",
|
|
133
|
+
"@storybook/channel-postmessage": "7.0.0-beta.61",
|
|
134
|
+
"@storybook/channel-websocket": "7.0.0-beta.61",
|
|
135
|
+
"@storybook/channels": "7.0.0-beta.61",
|
|
136
|
+
"@storybook/cli": "7.0.0-beta.61",
|
|
137
|
+
"@storybook/client-api": "7.0.0-beta.61",
|
|
138
|
+
"@storybook/client-logger": "7.0.0-beta.61",
|
|
139
|
+
"@storybook/codemod": "7.0.0-beta.61",
|
|
140
|
+
"@storybook/core-client": "7.0.0-beta.61",
|
|
141
|
+
"@storybook/core-common": "7.0.0-beta.61",
|
|
142
|
+
"@storybook/core-events": "7.0.0-beta.61",
|
|
143
|
+
"@storybook/core-server": "7.0.0-beta.61",
|
|
144
|
+
"@storybook/core-webpack": "7.0.0-beta.61",
|
|
145
|
+
"@storybook/csf-plugin": "7.0.0-beta.61",
|
|
146
|
+
"@storybook/csf-tools": "7.0.0-beta.61",
|
|
147
|
+
"@storybook/docs-tools": "7.0.0-beta.61",
|
|
148
|
+
"@storybook/ember": "7.0.0-beta.61",
|
|
149
|
+
"@storybook/html": "7.0.0-beta.61",
|
|
150
|
+
"@storybook/html-vite": "7.0.0-beta.61",
|
|
151
|
+
"@storybook/html-webpack5": "7.0.0-beta.61",
|
|
152
|
+
"@storybook/instrumenter": "7.0.0-beta.61",
|
|
153
|
+
"@storybook/manager-api": "7.0.0-beta.61",
|
|
154
|
+
"@storybook/nextjs": "7.0.0-beta.61",
|
|
155
|
+
"@storybook/node-logger": "7.0.0-beta.61",
|
|
156
|
+
"@storybook/postinstall": "7.0.0-beta.61",
|
|
157
|
+
"@storybook/preact": "7.0.0-beta.61",
|
|
158
|
+
"@storybook/preact-vite": "7.0.0-beta.61",
|
|
159
|
+
"@storybook/preact-webpack5": "7.0.0-beta.61",
|
|
160
|
+
"@storybook/preset-create-react-app": "7.0.0-beta.61",
|
|
161
|
+
"@storybook/preset-html-webpack": "7.0.0-beta.61",
|
|
162
|
+
"@storybook/preset-preact-webpack": "7.0.0-beta.61",
|
|
163
|
+
"@storybook/preset-react-webpack": "7.0.0-beta.61",
|
|
164
|
+
"@storybook/preset-server-webpack": "7.0.0-beta.61",
|
|
165
|
+
"@storybook/preset-svelte-webpack": "7.0.0-beta.61",
|
|
166
|
+
"@storybook/preset-vue-webpack": "7.0.0-beta.61",
|
|
167
|
+
"@storybook/preset-vue3-webpack": "7.0.0-beta.61",
|
|
168
|
+
"@storybook/preset-web-components-webpack": "7.0.0-beta.61",
|
|
169
|
+
"@storybook/preview": "7.0.0-beta.61",
|
|
170
|
+
"@storybook/preview-api": "7.0.0-beta.61",
|
|
171
|
+
"@storybook/preview-web": "7.0.0-beta.61",
|
|
172
|
+
"@storybook/react": "7.0.0-beta.61",
|
|
173
|
+
"@storybook/react-dom-shim": "7.0.0-beta.61",
|
|
174
|
+
"@storybook/react-vite": "7.0.0-beta.61",
|
|
175
|
+
"@storybook/react-webpack5": "7.0.0-beta.61",
|
|
176
|
+
"@storybook/router": "7.0.0-beta.61",
|
|
177
|
+
"@storybook/server": "7.0.0-beta.61",
|
|
178
|
+
"@storybook/server-webpack5": "7.0.0-beta.61",
|
|
179
|
+
"@storybook/source-loader": "7.0.0-beta.61",
|
|
180
|
+
"@storybook/store": "7.0.0-beta.61",
|
|
181
|
+
"@storybook/svelte": "7.0.0-beta.61",
|
|
182
|
+
"@storybook/svelte-vite": "7.0.0-beta.61",
|
|
183
|
+
"@storybook/svelte-webpack5": "7.0.0-beta.61",
|
|
184
|
+
"@storybook/sveltekit": "7.0.0-beta.61",
|
|
185
|
+
"@storybook/telemetry": "7.0.0-beta.61",
|
|
186
|
+
"@storybook/theming": "7.0.0-beta.61",
|
|
187
|
+
"@storybook/types": "7.0.0-beta.61",
|
|
188
|
+
"@storybook/vue": "7.0.0-beta.61",
|
|
189
|
+
"@storybook/vue-vite": "7.0.0-beta.61",
|
|
190
|
+
"@storybook/vue-webpack5": "7.0.0-beta.61",
|
|
191
|
+
"@storybook/vue3": "7.0.0-beta.61",
|
|
192
|
+
"@storybook/vue3-vite": "7.0.0-beta.61",
|
|
193
|
+
"@storybook/vue3-webpack5": "7.0.0-beta.61",
|
|
194
|
+
"@storybook/web-components": "7.0.0-beta.61",
|
|
195
|
+
"@storybook/web-components-vite": "7.0.0-beta.61",
|
|
196
|
+
"@storybook/web-components-webpack5": "7.0.0-beta.61",
|
|
197
|
+
sb: "7.0.0-beta.61",
|
|
198
|
+
storybook: "7.0.0-beta.61"
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
// src/helpers.ts
|
|
202
|
+
var logger = console;
|
|
203
|
+
var commandLog = (message) => {
|
|
204
|
+
process.stdout.write(import_chalk.default.cyan(" \u2022 ") + message);
|
|
205
|
+
return (errorMessage, errorInfo) => {
|
|
206
|
+
if (errorMessage) {
|
|
207
|
+
process.stdout.write(`. ${import_chalk.default.red("\u2716")}
|
|
208
|
+
`);
|
|
209
|
+
logger.error(`
|
|
210
|
+
${import_chalk.default.red(errorMessage)}`);
|
|
211
|
+
if (!errorInfo) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
const newErrorInfo = errorInfo.split("\n").map((line) => ` ${import_chalk.default.dim(line)}`).join("\n");
|
|
215
|
+
logger.error(`${newErrorInfo}
|
|
216
|
+
`);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
process.stdout.write(`. ${import_chalk.default.green("\u2713")}
|
|
220
|
+
`);
|
|
221
|
+
};
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
// src/js-package-manager/JsPackageManager.ts
|
|
225
|
+
var logger2 = console;
|
|
226
|
+
function getPackageDetails(pkg) {
|
|
227
|
+
const idx = pkg.lastIndexOf("@");
|
|
228
|
+
if (idx <= 0) {
|
|
229
|
+
return [pkg, void 0];
|
|
230
|
+
}
|
|
231
|
+
const packageName = pkg.slice(0, idx);
|
|
232
|
+
const packageVersion = pkg.slice(idx + 1);
|
|
233
|
+
return [packageName, packageVersion];
|
|
234
|
+
}
|
|
235
|
+
var JsPackageManager = class {
|
|
236
|
+
// NOTE: for some reason yarn prefers the npm registry in
|
|
237
|
+
// local development, so always use npm
|
|
238
|
+
setRegistryURL(url) {
|
|
239
|
+
if (url) {
|
|
240
|
+
this.executeCommand("npm", ["config", "set", "registry", url]);
|
|
241
|
+
} else {
|
|
242
|
+
this.executeCommand("npm", ["config", "delete", "registry"]);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
getRegistryURL() {
|
|
246
|
+
const url = this.executeCommand("npm", ["config", "get", "registry"]).trim();
|
|
247
|
+
return url === "undefined" ? void 0 : url;
|
|
248
|
+
}
|
|
249
|
+
constructor(options) {
|
|
250
|
+
this.cwd = options == null ? void 0 : options.cwd;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Install dependencies listed in `package.json`
|
|
254
|
+
*/
|
|
255
|
+
installDependencies() {
|
|
256
|
+
let done = commandLog("Preparing to install dependencies");
|
|
257
|
+
done();
|
|
258
|
+
logger2.log();
|
|
259
|
+
logger2.log();
|
|
260
|
+
done = commandLog("Installing dependencies");
|
|
261
|
+
try {
|
|
262
|
+
this.runInstall();
|
|
263
|
+
} catch (e) {
|
|
264
|
+
done("An error occurred while installing dependencies.");
|
|
265
|
+
process.exit(1);
|
|
266
|
+
}
|
|
267
|
+
done();
|
|
268
|
+
}
|
|
269
|
+
packageJsonPath() {
|
|
270
|
+
return this.cwd ? import_path.default.resolve(this.cwd, "package.json") : import_path.default.resolve("package.json");
|
|
271
|
+
}
|
|
272
|
+
readPackageJson() {
|
|
273
|
+
const packageJsonPath = this.packageJsonPath();
|
|
274
|
+
if (!import_fs.default.existsSync(packageJsonPath)) {
|
|
275
|
+
throw new Error(`Could not read package.json file at ${packageJsonPath}`);
|
|
276
|
+
}
|
|
277
|
+
const jsonContent = import_fs.default.readFileSync(packageJsonPath, "utf8");
|
|
278
|
+
return JSON.parse(jsonContent);
|
|
279
|
+
}
|
|
280
|
+
writePackageJson(packageJson) {
|
|
281
|
+
const packageJsonToWrite = { ...packageJson };
|
|
282
|
+
if (packageJsonToWrite.dependencies && Object.keys(packageJsonToWrite.dependencies).length === 0) {
|
|
283
|
+
delete packageJsonToWrite.dependencies;
|
|
284
|
+
}
|
|
285
|
+
if (packageJsonToWrite.devDependencies && Object.keys(packageJsonToWrite.devDependencies).length === 0) {
|
|
286
|
+
delete packageJsonToWrite.devDependencies;
|
|
287
|
+
}
|
|
288
|
+
if (packageJsonToWrite.dependencies && Object.keys(packageJsonToWrite.peerDependencies).length === 0) {
|
|
289
|
+
delete packageJsonToWrite.peerDependencies;
|
|
290
|
+
}
|
|
291
|
+
const content = `${JSON.stringify(packageJsonToWrite, null, 2)}
|
|
292
|
+
`;
|
|
293
|
+
import_fs.default.writeFileSync(this.packageJsonPath(), content, "utf8");
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Read the `package.json` file available in the directory the command was call from
|
|
297
|
+
* If there is no `package.json` it will create one.
|
|
298
|
+
*/
|
|
299
|
+
retrievePackageJson() {
|
|
300
|
+
let packageJson;
|
|
301
|
+
try {
|
|
302
|
+
packageJson = this.readPackageJson();
|
|
303
|
+
} catch (err) {
|
|
304
|
+
this.initPackageJson();
|
|
305
|
+
packageJson = this.readPackageJson();
|
|
306
|
+
}
|
|
307
|
+
return {
|
|
308
|
+
...packageJson,
|
|
309
|
+
dependencies: { ...packageJson.dependencies },
|
|
310
|
+
devDependencies: { ...packageJson.devDependencies },
|
|
311
|
+
peerDependencies: { ...packageJson.peerDependencies }
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
getAllDependencies() {
|
|
315
|
+
const { dependencies, devDependencies, peerDependencies } = this.retrievePackageJson();
|
|
316
|
+
return {
|
|
317
|
+
...dependencies,
|
|
318
|
+
...devDependencies,
|
|
319
|
+
...peerDependencies
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Add dependencies to a project using `yarn add` or `npm install`.
|
|
324
|
+
*
|
|
325
|
+
* @param {Object} options contains `skipInstall`, `packageJson` and `installAsDevDependencies` which we use to determine how we install packages.
|
|
326
|
+
* @param {Array} dependencies contains a list of packages to add.
|
|
327
|
+
* @example
|
|
328
|
+
* addDependencies(options, [
|
|
329
|
+
* `@storybook/react@${storybookVersion}`,
|
|
330
|
+
* `@storybook/addon-actions@${actionsVersion}`,
|
|
331
|
+
* `@storybook/addon-links@${linksVersion}`,
|
|
332
|
+
* `@storybook/preview-api@${addonsVersion}`,
|
|
333
|
+
* ]);
|
|
334
|
+
*/
|
|
335
|
+
addDependencies(options, dependencies) {
|
|
336
|
+
const { skipInstall } = options;
|
|
337
|
+
if (skipInstall) {
|
|
338
|
+
const { packageJson } = options;
|
|
339
|
+
const dependenciesMap = dependencies.reduce((acc, dep) => {
|
|
340
|
+
const [packageName, packageVersion] = getPackageDetails(dep);
|
|
341
|
+
return { ...acc, [packageName]: packageVersion };
|
|
342
|
+
}, {});
|
|
343
|
+
if (options.installAsDevDependencies) {
|
|
344
|
+
packageJson.devDependencies = {
|
|
345
|
+
...packageJson.devDependencies,
|
|
346
|
+
...dependenciesMap
|
|
347
|
+
};
|
|
348
|
+
} else {
|
|
349
|
+
packageJson.dependencies = {
|
|
350
|
+
...packageJson.dependencies,
|
|
351
|
+
...dependenciesMap
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
this.writePackageJson(packageJson);
|
|
355
|
+
} else {
|
|
356
|
+
try {
|
|
357
|
+
this.runAddDeps(dependencies, options.installAsDevDependencies);
|
|
358
|
+
} catch (e) {
|
|
359
|
+
logger2.error("An error occurred while installing dependencies.");
|
|
360
|
+
logger2.log(e.message);
|
|
361
|
+
process.exit(1);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Remove dependencies from a project using `yarn remove` or `npm uninstall`.
|
|
367
|
+
*
|
|
368
|
+
* @param {Object} options contains `skipInstall`, `packageJson` and `installAsDevDependencies` which we use to determine how we install packages.
|
|
369
|
+
* @param {Array} dependencies contains a list of packages to remove.
|
|
370
|
+
* @example
|
|
371
|
+
* removeDependencies(options, [
|
|
372
|
+
* `@storybook/react`,
|
|
373
|
+
* `@storybook/addon-actions`,
|
|
374
|
+
* ]);
|
|
375
|
+
*/
|
|
376
|
+
removeDependencies(options, dependencies) {
|
|
377
|
+
const { skipInstall } = options;
|
|
378
|
+
if (skipInstall) {
|
|
379
|
+
const { packageJson } = options;
|
|
380
|
+
dependencies.forEach((dep) => {
|
|
381
|
+
if (packageJson.devDependencies) {
|
|
382
|
+
delete packageJson.devDependencies[dep];
|
|
383
|
+
}
|
|
384
|
+
if (packageJson.dependencies) {
|
|
385
|
+
delete packageJson.dependencies[dep];
|
|
386
|
+
}
|
|
387
|
+
});
|
|
388
|
+
this.writePackageJson(packageJson);
|
|
389
|
+
} else {
|
|
390
|
+
try {
|
|
391
|
+
this.runRemoveDeps(dependencies);
|
|
392
|
+
} catch (e) {
|
|
393
|
+
logger2.error("An error occurred while removing dependencies.");
|
|
394
|
+
logger2.log(e.message);
|
|
395
|
+
process.exit(1);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Return an array of strings matching following format: `<package_name>@<package_latest_version>`
|
|
401
|
+
*
|
|
402
|
+
* @param packages
|
|
403
|
+
*/
|
|
404
|
+
getVersionedPackages(packages) {
|
|
405
|
+
return Promise.all(
|
|
406
|
+
packages.map(async (pkg) => {
|
|
407
|
+
const [packageName, packageVersion] = getPackageDetails(pkg);
|
|
408
|
+
return `${packageName}@${await this.getVersion(packageName, packageVersion)}`;
|
|
409
|
+
})
|
|
410
|
+
);
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Return an array of string standing for the latest version of the input packages.
|
|
414
|
+
* To be able to identify which version goes with which package the order of the input array is keep.
|
|
415
|
+
*
|
|
416
|
+
* @param packageNames
|
|
417
|
+
*/
|
|
418
|
+
getVersions(...packageNames) {
|
|
419
|
+
return Promise.all(
|
|
420
|
+
packageNames.map((packageName) => {
|
|
421
|
+
return this.getVersion(packageName);
|
|
422
|
+
})
|
|
423
|
+
);
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Return the latest version of the input package available on npmjs registry.
|
|
427
|
+
* If constraint are provided it return the latest version matching the constraints.
|
|
428
|
+
*
|
|
429
|
+
* For `@storybook/*` packages the latest version is retrieved from `cli/src/versions.json` file directly
|
|
430
|
+
*
|
|
431
|
+
* @param packageName The name of the package
|
|
432
|
+
* @param constraint A valid semver constraint, example: '1.x || >=2.5.0 || 5.0.0 - 7.2.3'
|
|
433
|
+
*/
|
|
434
|
+
async getVersion(packageName, constraint) {
|
|
435
|
+
let current;
|
|
436
|
+
if (/(@storybook|^sb$|^storybook$)/.test(packageName)) {
|
|
437
|
+
current = versions_default[packageName];
|
|
438
|
+
}
|
|
439
|
+
let latest;
|
|
440
|
+
try {
|
|
441
|
+
latest = await this.latestVersion(packageName, constraint);
|
|
442
|
+
} catch (e) {
|
|
443
|
+
if (current) {
|
|
444
|
+
logger2.warn(`
|
|
445
|
+
${import_chalk2.default.yellow(e.message)}`);
|
|
446
|
+
return current;
|
|
447
|
+
}
|
|
448
|
+
logger2.error(`
|
|
449
|
+
${import_chalk2.default.red(e.message)}`);
|
|
450
|
+
process.exit(1);
|
|
451
|
+
}
|
|
452
|
+
const versionToUse = current && (!constraint || (0, import_semver3.satisfies)(current, constraint)) && (0, import_semver3.gt)(current, latest) ? current : latest;
|
|
453
|
+
return `^${versionToUse}`;
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Get the latest version of the package available on npmjs.com.
|
|
457
|
+
* If constraint is set then it returns a version satisfying it, otherwise the latest version available is returned.
|
|
458
|
+
*
|
|
459
|
+
* @param packageName Name of the package
|
|
460
|
+
* @param constraint Version range to use to constraint the returned version
|
|
461
|
+
*/
|
|
462
|
+
async latestVersion(packageName, constraint) {
|
|
463
|
+
if (!constraint) {
|
|
464
|
+
return this.runGetVersions(packageName, false);
|
|
465
|
+
}
|
|
466
|
+
const versions = await this.runGetVersions(packageName, true);
|
|
467
|
+
return versions.reverse().find((version) => (0, import_semver3.satisfies)(version, constraint));
|
|
468
|
+
}
|
|
469
|
+
addStorybookCommandInScripts(options) {
|
|
470
|
+
const sbPort = (options == null ? void 0 : options.port) ?? 6006;
|
|
471
|
+
const storybookCmd = `storybook dev -p ${sbPort}`;
|
|
472
|
+
const buildStorybookCmd = `storybook build`;
|
|
473
|
+
const preCommand = (options == null ? void 0 : options.preCommand) ? this.getRunCommand(options.preCommand) : void 0;
|
|
474
|
+
this.addScripts({
|
|
475
|
+
storybook: [preCommand, storybookCmd].filter(Boolean).join(" && "),
|
|
476
|
+
"build-storybook": [preCommand, buildStorybookCmd].filter(Boolean).join(" && ")
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
addESLintConfig() {
|
|
480
|
+
var _a;
|
|
481
|
+
const packageJson = this.retrievePackageJson();
|
|
482
|
+
this.writePackageJson({
|
|
483
|
+
...packageJson,
|
|
484
|
+
eslintConfig: {
|
|
485
|
+
...packageJson.eslintConfig,
|
|
486
|
+
overrides: [
|
|
487
|
+
...((_a = packageJson.eslintConfig) == null ? void 0 : _a.overrides) || [],
|
|
488
|
+
{
|
|
489
|
+
files: ["**/*.stories.*"],
|
|
490
|
+
rules: {
|
|
491
|
+
"import/no-anonymous-default-export": "off"
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
]
|
|
495
|
+
}
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
addScripts(scripts) {
|
|
499
|
+
const packageJson = this.retrievePackageJson();
|
|
500
|
+
this.writePackageJson({
|
|
501
|
+
...packageJson,
|
|
502
|
+
scripts: {
|
|
503
|
+
...packageJson.scripts,
|
|
504
|
+
...scripts
|
|
505
|
+
}
|
|
506
|
+
});
|
|
507
|
+
}
|
|
508
|
+
addPackageResolutions(versions) {
|
|
509
|
+
const packageJson = this.retrievePackageJson();
|
|
510
|
+
const resolutions = this.getResolutions(packageJson, versions);
|
|
511
|
+
this.writePackageJson({ ...packageJson, ...resolutions });
|
|
512
|
+
}
|
|
513
|
+
executeCommand(command, args, stdio, cwd) {
|
|
514
|
+
const commandResult = (0, import_cross_spawn.sync)(command, args, {
|
|
515
|
+
cwd: cwd ?? this.cwd,
|
|
516
|
+
stdio: stdio ?? "pipe",
|
|
517
|
+
encoding: "utf-8",
|
|
518
|
+
shell: true
|
|
519
|
+
});
|
|
520
|
+
if (commandResult.status !== 0) {
|
|
521
|
+
throw new Error(commandResult.stderr ?? "");
|
|
522
|
+
}
|
|
523
|
+
return commandResult.stdout ?? "";
|
|
524
|
+
}
|
|
525
|
+
};
|
|
526
|
+
|
|
527
|
+
// src/js-package-manager/NPMProxy.ts
|
|
528
|
+
var NPMProxy = class extends JsPackageManager {
|
|
529
|
+
constructor() {
|
|
530
|
+
super(...arguments);
|
|
531
|
+
this.type = "npm";
|
|
532
|
+
}
|
|
533
|
+
initPackageJson() {
|
|
534
|
+
return this.executeCommand("npm", ["init", "-y"]);
|
|
535
|
+
}
|
|
536
|
+
getRunStorybookCommand() {
|
|
537
|
+
return "npm run storybook";
|
|
538
|
+
}
|
|
539
|
+
getRunCommand(command) {
|
|
540
|
+
return `npm run ${command}`;
|
|
541
|
+
}
|
|
542
|
+
getNpmVersion() {
|
|
543
|
+
return this.executeCommand("npm", ["--version"]);
|
|
544
|
+
}
|
|
545
|
+
getInstallArgs() {
|
|
546
|
+
if (!this.installArgs) {
|
|
547
|
+
this.installArgs = [];
|
|
548
|
+
}
|
|
549
|
+
return this.installArgs;
|
|
550
|
+
}
|
|
551
|
+
runPackageCommand(command, args, cwd) {
|
|
552
|
+
return this.executeCommand(`npm`, ["exec", "--", command, ...args], void 0, cwd);
|
|
553
|
+
}
|
|
554
|
+
getResolutions(packageJson, versions) {
|
|
555
|
+
return {
|
|
556
|
+
overrides: {
|
|
557
|
+
...packageJson.overrides,
|
|
558
|
+
...versions
|
|
559
|
+
}
|
|
560
|
+
};
|
|
561
|
+
}
|
|
562
|
+
runInstall() {
|
|
563
|
+
this.executeCommand("npm", ["install", ...this.getInstallArgs()], "inherit");
|
|
564
|
+
}
|
|
565
|
+
runAddDeps(dependencies, installAsDevDependencies) {
|
|
566
|
+
let args = [...dependencies];
|
|
567
|
+
if (installAsDevDependencies) {
|
|
568
|
+
args = ["-D", ...args];
|
|
569
|
+
}
|
|
570
|
+
this.executeCommand("npm", ["install", ...this.getInstallArgs(), ...args], "inherit");
|
|
571
|
+
}
|
|
572
|
+
runRemoveDeps(dependencies) {
|
|
573
|
+
const args = [...dependencies];
|
|
574
|
+
this.executeCommand("npm", ["uninstall", ...this.getInstallArgs(), ...args], "inherit");
|
|
575
|
+
}
|
|
576
|
+
runGetVersions(packageName, fetchAllVersions) {
|
|
577
|
+
const args = [fetchAllVersions ? "versions" : "version", "--json"];
|
|
578
|
+
const commandResult = this.executeCommand("npm", ["info", packageName, ...args]);
|
|
579
|
+
try {
|
|
580
|
+
const parsedOutput = JSON.parse(commandResult);
|
|
581
|
+
if (parsedOutput.error) {
|
|
582
|
+
throw new Error(parsedOutput.error.summary);
|
|
583
|
+
} else {
|
|
584
|
+
return parsedOutput;
|
|
585
|
+
}
|
|
586
|
+
} catch (e) {
|
|
587
|
+
throw new Error(`Unable to find versions of ${packageName} using npm`);
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
};
|
|
591
|
+
|
|
592
|
+
// src/js-package-manager/PNPMProxy.ts
|
|
593
|
+
var import_fs_extra2 = require("fs-extra");
|
|
594
|
+
var PNPMProxy = class extends JsPackageManager {
|
|
595
|
+
constructor() {
|
|
596
|
+
super(...arguments);
|
|
597
|
+
this.type = "pnpm";
|
|
598
|
+
}
|
|
599
|
+
detectWorkspaceRoot() {
|
|
600
|
+
const CWD = process.cwd();
|
|
601
|
+
const pnpmWorkspaceYaml = `${CWD}/pnpm-workspace.yaml`;
|
|
602
|
+
return (0, import_fs_extra2.pathExistsSync)(pnpmWorkspaceYaml);
|
|
603
|
+
}
|
|
604
|
+
initPackageJson() {
|
|
605
|
+
return this.executeCommand("pnpm", ["init", "-y"]);
|
|
606
|
+
}
|
|
607
|
+
getRunStorybookCommand() {
|
|
608
|
+
return "pnpm run storybook";
|
|
609
|
+
}
|
|
610
|
+
getRunCommand(command) {
|
|
611
|
+
return `pnpm run ${command}`;
|
|
612
|
+
}
|
|
613
|
+
getPnpmVersion() {
|
|
614
|
+
return this.executeCommand("pnpm", ["--version"]);
|
|
615
|
+
}
|
|
616
|
+
getInstallArgs() {
|
|
617
|
+
if (!this.installArgs) {
|
|
618
|
+
this.installArgs = [];
|
|
619
|
+
if (this.detectWorkspaceRoot()) {
|
|
620
|
+
this.installArgs.push("-w");
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
return this.installArgs;
|
|
624
|
+
}
|
|
625
|
+
runPackageCommand(command, args, cwd) {
|
|
626
|
+
return this.executeCommand(`pnpm`, ["exec", command, ...args], void 0, cwd);
|
|
627
|
+
}
|
|
628
|
+
getResolutions(packageJson, versions) {
|
|
629
|
+
return {
|
|
630
|
+
overrides: {
|
|
631
|
+
...packageJson.overrides,
|
|
632
|
+
...versions
|
|
633
|
+
}
|
|
634
|
+
};
|
|
635
|
+
}
|
|
636
|
+
runInstall() {
|
|
637
|
+
this.executeCommand("pnpm", ["install", ...this.getInstallArgs()], "inherit");
|
|
638
|
+
}
|
|
639
|
+
runAddDeps(dependencies, installAsDevDependencies) {
|
|
640
|
+
let args = [...dependencies];
|
|
641
|
+
if (installAsDevDependencies) {
|
|
642
|
+
args = ["-D", ...args];
|
|
643
|
+
}
|
|
644
|
+
this.executeCommand("pnpm", ["add", ...args, ...this.getInstallArgs()], "inherit");
|
|
645
|
+
}
|
|
646
|
+
runRemoveDeps(dependencies) {
|
|
647
|
+
const args = [...dependencies];
|
|
648
|
+
this.executeCommand("pnpm", ["remove", ...args, ...this.getInstallArgs()], "inherit");
|
|
649
|
+
}
|
|
650
|
+
runGetVersions(packageName, fetchAllVersions) {
|
|
651
|
+
const args = [fetchAllVersions ? "versions" : "version", "--json"];
|
|
652
|
+
const commandResult = this.executeCommand("pnpm", ["info", packageName, ...args]);
|
|
653
|
+
try {
|
|
654
|
+
const parsedOutput = JSON.parse(commandResult);
|
|
655
|
+
if (parsedOutput.error) {
|
|
656
|
+
throw new Error(parsedOutput.error.summary);
|
|
657
|
+
} else {
|
|
658
|
+
return parsedOutput;
|
|
659
|
+
}
|
|
660
|
+
} catch (e) {
|
|
661
|
+
throw new Error(`Unable to find versions of ${packageName} using pnpm`);
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
};
|
|
665
|
+
|
|
666
|
+
// src/js-package-manager/Yarn2Proxy.ts
|
|
667
|
+
var Yarn2Proxy = class extends JsPackageManager {
|
|
668
|
+
constructor() {
|
|
669
|
+
super(...arguments);
|
|
670
|
+
this.type = "yarn2";
|
|
671
|
+
}
|
|
672
|
+
getInstallArgs() {
|
|
673
|
+
if (!this.installArgs) {
|
|
674
|
+
this.installArgs = [];
|
|
675
|
+
}
|
|
676
|
+
return this.installArgs;
|
|
677
|
+
}
|
|
678
|
+
initPackageJson() {
|
|
679
|
+
return this.executeCommand("yarn", ["init"]);
|
|
680
|
+
}
|
|
681
|
+
getRunStorybookCommand() {
|
|
682
|
+
return "yarn storybook";
|
|
683
|
+
}
|
|
684
|
+
getRunCommand(command) {
|
|
685
|
+
return `yarn ${command}`;
|
|
686
|
+
}
|
|
687
|
+
runPackageCommand(command, args, cwd) {
|
|
688
|
+
return this.executeCommand(`yarn`, [command, ...args], void 0, cwd);
|
|
689
|
+
}
|
|
690
|
+
getResolutions(packageJson, versions) {
|
|
691
|
+
return {
|
|
692
|
+
resolutions: {
|
|
693
|
+
...packageJson.resolutions,
|
|
694
|
+
...versions
|
|
695
|
+
}
|
|
696
|
+
};
|
|
697
|
+
}
|
|
698
|
+
runInstall() {
|
|
699
|
+
this.executeCommand("yarn", ["install", ...this.getInstallArgs()], "inherit");
|
|
700
|
+
}
|
|
701
|
+
runAddDeps(dependencies, installAsDevDependencies) {
|
|
702
|
+
let args = [...dependencies];
|
|
703
|
+
if (installAsDevDependencies) {
|
|
704
|
+
args = ["-D", ...args];
|
|
705
|
+
}
|
|
706
|
+
this.executeCommand("yarn", ["add", ...this.getInstallArgs(), ...args], "inherit");
|
|
707
|
+
}
|
|
708
|
+
runRemoveDeps(dependencies) {
|
|
709
|
+
const args = [...dependencies];
|
|
710
|
+
this.executeCommand("yarn", ["remove", ...this.getInstallArgs(), ...args], "inherit");
|
|
711
|
+
}
|
|
712
|
+
runGetVersions(packageName, fetchAllVersions) {
|
|
713
|
+
const field = fetchAllVersions ? "versions" : "version";
|
|
714
|
+
const args = ["--fields", field, "--json"];
|
|
715
|
+
const commandResult = this.executeCommand("yarn", ["npm", "info", packageName, ...args]);
|
|
716
|
+
try {
|
|
717
|
+
const parsedOutput = JSON.parse(commandResult);
|
|
718
|
+
return parsedOutput[field];
|
|
719
|
+
} catch (e) {
|
|
720
|
+
throw new Error(`Unable to find versions of ${packageName} using yarn 2`);
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
};
|
|
724
|
+
|
|
725
|
+
// src/js-package-manager/Yarn1Proxy.ts
|
|
726
|
+
var Yarn1Proxy = class extends JsPackageManager {
|
|
727
|
+
constructor() {
|
|
728
|
+
super(...arguments);
|
|
729
|
+
this.type = "yarn1";
|
|
730
|
+
}
|
|
731
|
+
getInstallArgs() {
|
|
732
|
+
if (!this.installArgs) {
|
|
733
|
+
this.installArgs = ["--ignore-workspace-root-check"];
|
|
734
|
+
}
|
|
735
|
+
return this.installArgs;
|
|
736
|
+
}
|
|
737
|
+
initPackageJson() {
|
|
738
|
+
return this.executeCommand("yarn", ["init", "-y"]);
|
|
739
|
+
}
|
|
740
|
+
getRunStorybookCommand() {
|
|
741
|
+
return "yarn storybook";
|
|
742
|
+
}
|
|
743
|
+
getRunCommand(command) {
|
|
744
|
+
return `yarn ${command}`;
|
|
745
|
+
}
|
|
746
|
+
runPackageCommand(command, args, cwd) {
|
|
747
|
+
return this.executeCommand(`yarn`, [command, ...args], void 0, cwd);
|
|
748
|
+
}
|
|
749
|
+
getResolutions(packageJson, versions) {
|
|
750
|
+
return {
|
|
751
|
+
resolutions: {
|
|
752
|
+
...packageJson.resolutions,
|
|
753
|
+
...versions
|
|
754
|
+
}
|
|
755
|
+
};
|
|
756
|
+
}
|
|
757
|
+
runInstall() {
|
|
758
|
+
this.executeCommand("yarn", ["install", ...this.getInstallArgs()], "inherit");
|
|
759
|
+
}
|
|
760
|
+
runAddDeps(dependencies, installAsDevDependencies) {
|
|
761
|
+
let args = [...dependencies];
|
|
762
|
+
if (installAsDevDependencies) {
|
|
763
|
+
args = ["-D", ...args];
|
|
764
|
+
}
|
|
765
|
+
this.executeCommand("yarn", ["add", ...this.getInstallArgs(), ...args], "inherit");
|
|
766
|
+
}
|
|
767
|
+
runRemoveDeps(dependencies) {
|
|
768
|
+
const args = [...dependencies];
|
|
769
|
+
this.executeCommand("yarn", ["remove", ...this.getInstallArgs(), ...args], "inherit");
|
|
770
|
+
}
|
|
771
|
+
runGetVersions(packageName, fetchAllVersions) {
|
|
772
|
+
const args = [fetchAllVersions ? "versions" : "version", "--json"];
|
|
773
|
+
const commandResult = this.executeCommand("yarn", ["info", packageName, ...args]);
|
|
774
|
+
try {
|
|
775
|
+
const parsedOutput = JSON.parse(commandResult);
|
|
776
|
+
if (parsedOutput.type === "inspect") {
|
|
777
|
+
return parsedOutput.data;
|
|
778
|
+
}
|
|
779
|
+
throw new Error(`Unable to find versions of ${packageName} using yarn`);
|
|
780
|
+
} catch (e) {
|
|
781
|
+
throw new Error(`Unable to find versions of ${packageName} using yarn`);
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
};
|
|
785
|
+
|
|
786
|
+
// src/js-package-manager/JsPackageManagerFactory.ts
|
|
787
|
+
var NPM_LOCKFILE = "package-lock.json";
|
|
788
|
+
var PNPM_LOCKFILE = "pnpm-lock.yaml";
|
|
789
|
+
var YARN_LOCKFILE = "yarn.lock";
|
|
790
|
+
var JsPackageManagerFactory = class {
|
|
791
|
+
static getPackageManager({ force } = {}, cwd) {
|
|
792
|
+
if (force === "npm") {
|
|
793
|
+
return new NPMProxy({ cwd });
|
|
794
|
+
}
|
|
795
|
+
if (force === "pnpm") {
|
|
796
|
+
return new PNPMProxy({ cwd });
|
|
797
|
+
}
|
|
798
|
+
if (force === "yarn1") {
|
|
799
|
+
return new Yarn1Proxy({ cwd });
|
|
800
|
+
}
|
|
801
|
+
if (force === "yarn2") {
|
|
802
|
+
return new Yarn2Proxy({ cwd });
|
|
803
|
+
}
|
|
804
|
+
const yarnVersion = getYarnVersion(cwd);
|
|
805
|
+
const closestLockfilePath = (0, import_find_up.sync)([YARN_LOCKFILE, PNPM_LOCKFILE, NPM_LOCKFILE], {
|
|
806
|
+
cwd
|
|
807
|
+
});
|
|
808
|
+
const closestLockfile = closestLockfilePath && import_node_path.default.basename(closestLockfilePath);
|
|
809
|
+
const hasNPMCommand = hasNPM(cwd);
|
|
810
|
+
const hasPNPMCommand = hasPNPM(cwd);
|
|
811
|
+
if (yarnVersion && (closestLockfile === YARN_LOCKFILE || !hasNPMCommand && !hasPNPMCommand)) {
|
|
812
|
+
return yarnVersion === 1 ? new Yarn1Proxy({ cwd }) : new Yarn2Proxy({ cwd });
|
|
813
|
+
}
|
|
814
|
+
if (hasPNPMCommand && closestLockfile === PNPM_LOCKFILE) {
|
|
815
|
+
return new PNPMProxy({ cwd });
|
|
816
|
+
}
|
|
817
|
+
if (hasNPMCommand) {
|
|
818
|
+
return new NPMProxy({ cwd });
|
|
819
|
+
}
|
|
820
|
+
throw new Error("Unable to find a usable package manager within NPM, PNPM, Yarn and Yarn 2");
|
|
821
|
+
}
|
|
822
|
+
};
|
|
823
|
+
function hasNPM(cwd) {
|
|
824
|
+
const npmVersionCommand = (0, import_cross_spawn2.sync)("npm", ["--version"], { cwd, shell: true });
|
|
825
|
+
return npmVersionCommand.status === 0;
|
|
826
|
+
}
|
|
827
|
+
function hasPNPM(cwd) {
|
|
828
|
+
const pnpmVersionCommand = (0, import_cross_spawn2.sync)("pnpm", ["--version"], { cwd, shell: true });
|
|
829
|
+
return pnpmVersionCommand.status === 0;
|
|
830
|
+
}
|
|
831
|
+
function getYarnVersion(cwd) {
|
|
832
|
+
const yarnVersionCommand = (0, import_cross_spawn2.sync)("yarn", ["--version"], { cwd, shell: true });
|
|
833
|
+
if (yarnVersionCommand.status !== 0) {
|
|
834
|
+
return void 0;
|
|
835
|
+
}
|
|
836
|
+
const yarnVersion = yarnVersionCommand.output.toString().replace(/,/g, "").replace(/"/g, "");
|
|
837
|
+
return /^1\.+/.test(yarnVersion) ? 1 : 2;
|
|
838
|
+
}
|
|
839
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
840
|
+
0 && (module.exports = {
|
|
841
|
+
JsPackageManager,
|
|
842
|
+
JsPackageManagerFactory,
|
|
843
|
+
getPackageDetails,
|
|
844
|
+
useNpmWarning
|
|
845
|
+
});
|