UNPKG

2.02 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.getPackageManager = exports.supportsNpm = exports.supportsYarn = void 0;
4/**
5 * @license
6 * Copyright Google Inc. All Rights Reserved.
7 *
8 * Use of this source code is governed by an MIT-style license that can be
9 * found in the LICENSE file at https://angular.io/license
10 */
11const child_process_1 = require("child_process");
12const fs_1 = require("fs");
13const path_1 = require("path");
14const schema_1 = require("../lib/config/schema");
15const config_1 = require("./config");
16function supports(name) {
17 try {
18 child_process_1.execSync(`${name} --version`, { stdio: 'ignore' });
19 return true;
20 }
21 catch (_a) {
22 return false;
23 }
24}
25function supportsYarn() {
26 return supports('yarn');
27}
28exports.supportsYarn = supportsYarn;
29function supportsNpm() {
30 return supports('npm');
31}
32exports.supportsNpm = supportsNpm;
33async function getPackageManager(root) {
34 let packageManager = await config_1.getConfiguredPackageManager();
35 if (packageManager) {
36 return packageManager;
37 }
38 const hasYarn = supportsYarn();
39 const hasYarnLock = fs_1.existsSync(path_1.join(root, 'yarn.lock'));
40 const hasNpm = supportsNpm();
41 const hasNpmLock = fs_1.existsSync(path_1.join(root, 'package-lock.json'));
42 if (hasYarn && hasYarnLock && !hasNpmLock) {
43 packageManager = schema_1.PackageManager.Yarn;
44 }
45 else if (hasNpm && hasNpmLock && !hasYarnLock) {
46 packageManager = schema_1.PackageManager.Npm;
47 }
48 else if (hasYarn && !hasNpm) {
49 packageManager = schema_1.PackageManager.Yarn;
50 }
51 else if (hasNpm && !hasYarn) {
52 packageManager = schema_1.PackageManager.Npm;
53 }
54 // TODO: This should eventually inform the user of ambiguous package manager usage.
55 // Potentially with a prompt to choose and optionally set as the default.
56 return packageManager || schema_1.PackageManager.Npm;
57}
58exports.getPackageManager = getPackageManager;