"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = installPackagesAsync;
function _spawnAsync() {
const data = _interopRequireDefault(require("@expo/spawn-async"));
_spawnAsync = function () {
return data;
};
return data;
}
function _fsExtra() {
const data = _interopRequireDefault(require("fs-extra"));
_fsExtra = function () {
return data;
};
return data;
}
function _path() {
const data = _interopRequireDefault(require("path"));
_path = function () {
return data;
};
return data;
}
function _semver() {
const data = _interopRequireDefault(require("semver"));
_semver = function () {
return data;
};
return data;
}
function _Logger() {
const data = _interopRequireDefault(require("./Logger"));
_Logger = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
async function installPackagesAsync(projectDir, packages, options = {}) {
let packageManager = 'npm';
if (options.packageManager) {
packageManager = options.packageManager;
} else {
const packageLockJsonExists = await _fsExtra().default.pathExists(_path().default.join(projectDir, 'package-lock.json'));
const yarnExists = await yarnExistsAsync();
packageManager = yarnExists && !packageLockJsonExists ? 'yarn' : 'npm';
}
if (packageManager === 'yarn') {
_Logger().default.info(`Installing dependencies using Yarn...`);
await (0, _spawnAsync().default)('yarnpkg', ['add', '--silent', ...packages], {
cwd: projectDir,
stdio: 'inherit'
});
} else {
_Logger().default.info(`Installing dependencies using npm...`);
if (!(await _fsExtra().default.pathExists(_path().default.join(projectDir, 'node_modules')))) {
await (0, _spawnAsync().default)('npm', ['install', '--loglevel', 'error'], {
cwd: projectDir,
stdio: 'inherit'
});
}
await (0, _spawnAsync().default)('npm', ['install', '--save', '--loglevel', 'error', ...packages], {
cwd: projectDir,
stdio: 'inherit'
});
}
}
async function yarnExistsAsync() {
try {
let version = (await (0, _spawnAsync().default)('yarnpkg', ['--version'])).stdout.trim();
return !!_semver().default.valid(version);
} catch (e) {
return false;
}
}
//# sourceMappingURL=../__sourcemaps__/detach/installPackagesAsync.js.map