"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