UNPKG

2.34 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.NPMProxy = void 0;
7
8var _semver = _interopRequireDefault(require("@storybook/semver"));
9
10var _JsPackageManager = require("./JsPackageManager");
11
12function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14class NPMProxy extends _JsPackageManager.JsPackageManager {
15 constructor(...args) {
16 super(...args);
17 this.type = 'npm';
18 this.installArgs = void 0;
19 }
20
21 initPackageJson() {
22 return this.executeCommand('npm', ['init', '-y']);
23 }
24
25 getRunStorybookCommand() {
26 return 'npm run storybook';
27 }
28
29 getRunCommand(command) {
30 return `npm run ${command}`;
31 }
32
33 getNpmVersion() {
34 return this.executeCommand('npm', ['--version']);
35 }
36
37 hasLegacyPeerDeps() {
38 const result = this.executeCommand('npm', ['config', 'get', 'legacy-peer-deps', '--location=project']);
39 return result.trim() === 'true';
40 }
41
42 setLegacyPeerDeps() {
43 this.executeCommand('npm', ['config', 'set', 'legacy-peer-deps=true', '--location=project']);
44 }
45
46 needsLegacyPeerDeps(version) {
47 return _semver.default.gte(version, '7.0.0') && !this.hasLegacyPeerDeps();
48 }
49
50 getInstallArgs() {
51 if (!this.installArgs) {
52 this.installArgs = this.needsLegacyPeerDeps(this.getNpmVersion()) ? ['install', '--legacy-peer-deps'] : ['install'];
53 }
54
55 return this.installArgs;
56 }
57
58 runInstall() {
59 this.executeCommand('npm', this.getInstallArgs(), 'inherit');
60 }
61
62 runAddDeps(dependencies, installAsDevDependencies) {
63 let args = [...dependencies];
64
65 if (installAsDevDependencies) {
66 args = ['-D', ...args];
67 }
68
69 this.executeCommand('npm', [...this.getInstallArgs(), ...args], 'inherit');
70 }
71
72 runGetVersions(packageName, fetchAllVersions) {
73 const args = [fetchAllVersions ? 'versions' : 'version', '--json'];
74 const commandResult = this.executeCommand('npm', ['info', packageName, ...args]);
75
76 try {
77 const parsedOutput = JSON.parse(commandResult);
78
79 if (parsedOutput.error) {
80 // FIXME: improve error handling
81 throw new Error(parsedOutput.error.summary);
82 } else {
83 return parsedOutput;
84 }
85 } catch (e) {
86 throw new Error(`Unable to find versions of ${packageName} using npm`);
87 }
88 }
89
90}
91
92exports.NPMProxy = NPMProxy;
\No newline at end of file