UNPKG

@stackbit/utils

Version:
86 lines 3.11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPackageManager = void 0; const lodash_1 = __importDefault(require("lodash")); const path_1 = __importDefault(require("path")); const fs_extra_1 = __importDefault(require("fs-extra")); const js_yaml_1 = __importDefault(require("js-yaml")); async function detectPackageManager(dir) { let packageManager = null; if (await fs_extra_1.default.pathExists(path_1.default.join(dir, 'pnpm-lock.yaml'))) { packageManager = 'pnpm'; } else if (await fs_extra_1.default.pathExists(path_1.default.join(dir, 'yarn.lock'))) { packageManager = 'yarn'; } else if (await fs_extra_1.default.pathExists(path_1.default.join(dir, 'Gemfile'))) { packageManager = 'bundle'; } else if (await fs_extra_1.default.pathExists(path_1.default.join(dir, 'package.json'))) { packageManager = 'npm'; } return packageManager; } async function checkIsYarnV2or3(dir) { try { const yarnRcFile = path_1.default.join(dir, '.yarnrc.yml'); const yarnRcExists = await fs_extra_1.default.pathExists(yarnRcFile); if (yarnRcExists) { const fileContents = await fs_extra_1.default.readFile(yarnRcFile, 'utf8'); const data = js_yaml_1.default.load(fileContents); return lodash_1.default.get(data, 'yarnPath') === '.yarn/releases/yarn-berry.cjs' || lodash_1.default.get(data, 'yarnPath').startsWith('.yarn/releases/yarn-3.'); } } catch (err) { throw new Error('error checking for yarn2'); } return false; } async function getPackageManager(dir) { const packageManager = await detectPackageManager(dir); if (!packageManager) { return null; } let cmd = packageManager; let args = []; let useNvm = false; const env = {}; if (packageManager === 'bundle') { cmd = 'bundle'; args = ['install']; } else if (packageManager === 'pnpm') { cmd = 'pnpm'; args = ['install', '--prefer-offline', '--color=always']; useNvm = true; } else if (packageManager === 'npm') { cmd = 'npm'; args = ['install', '--no-audit', '--prefer-offline', '--no-save', '--color=always']; useNvm = true; } else if (packageManager === 'yarn') { const isYarnV2orHigher = await checkIsYarnV2or3(dir); cmd = 'yarn'; args = ['install']; useNvm = true; if (isYarnV2orHigher) { env.YARN_NODE_LINKER = 'node-modules'; } else { args.push('--non-interactive', `--cache-folder ${path_1.default.join(path_1.default.dirname(dir), '.cache-' + path_1.default.basename(dir))}`, '--color=always'); } } return { name: packageManager, cmd, args, useNvm, env }; } exports.getPackageManager = getPackageManager; //# sourceMappingURL=package-manager.js.map