1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = void 0;
|
7 |
|
8 | var _fs = _interopRequireDefault(require("fs"));
|
9 |
|
10 | var _path = _interopRequireDefault(require("path"));
|
11 |
|
12 | var _crossSpawn = _interopRequireDefault(require("cross-spawn"));
|
13 |
|
14 | var _logger = _interopRequireDefault(require("@parcel/logger"));
|
15 |
|
16 | var _promiseFromProcess = _interopRequireDefault(require("./promiseFromProcess"));
|
17 |
|
18 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
19 |
|
20 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
21 |
|
22 | const NPM_CMD = 'npm';
|
23 |
|
24 | class Npm {
|
25 | constructor({
|
26 | cwd,
|
27 | packageLocation
|
28 | }) {
|
29 | _defineProperty(this, "cwd", void 0);
|
30 |
|
31 | _defineProperty(this, "packageLocation", void 0);
|
32 |
|
33 | this.cwd = cwd;
|
34 | this.packageLocation = packageLocation;
|
35 | }
|
36 |
|
37 | async install(modules, saveDev = true) {
|
38 |
|
39 |
|
40 | if (this.packageLocation == null) {
|
41 | await _fs.default.writeFile(_path.default.join(this.cwd, 'package.json'), '{}');
|
42 | }
|
43 |
|
44 | let args = ['install', '--json', ...modules, saveDev ? '--save-dev' : '--save'];
|
45 | let installProcess = (0, _crossSpawn.default)(NPM_CMD, args, {
|
46 | cwd: this.cwd
|
47 | });
|
48 | let stdout = '';
|
49 | installProcess.stdout.on('data', str => {
|
50 | stdout += str;
|
51 | });
|
52 | let stderr = [];
|
53 | installProcess.stderr.on('data', str => {
|
54 | stderr.push(str);
|
55 | });
|
56 |
|
57 | try {
|
58 | await (0, _promiseFromProcess.default)(installProcess);
|
59 | let results = JSON.parse(stdout);
|
60 | let addedCount = results.added.length;
|
61 |
|
62 | if (addedCount > 0) {
|
63 | _logger.default.log(`Added ${addedCount} packages via npm`);
|
64 | }
|
65 |
|
66 |
|
67 |
|
68 |
|
69 | for (let message of stderr) {
|
70 | _logger.default.log(message);
|
71 | }
|
72 | } catch (e) {
|
73 | throw new Error('npm failed to install modules');
|
74 | }
|
75 | }
|
76 |
|
77 | }
|
78 |
|
79 | exports.default = Npm;
|
80 |
|
81 | _defineProperty(Npm, "__exportSpecifier", "@parcel/utils/lib/Npm.js"); |
\ | No newline at end of file |