UNPKG

@unts/patch-package

Version:

Fix broken node modules with no fuss

63 lines (62 loc) 7.68 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.detectPackageManager = void 0; const find_yarn_workspace_root_1 = __importDefault(require("find-yarn-workspace-root")); const fs_extra_1 = __importDefault(require("fs-extra")); const picocolors_1 = __importDefault(require("picocolors")); const path_1 = require("./path"); function printNoYarnLockfileError() { console.log(` ${picocolors_1.default.red(picocolors_1.default.bold("**ERROR**"))} ${picocolors_1.default.red(`The --use-yarn option was specified but there is no yarn.lock file`)} `); } function printNoLockfilesError() { console.log(` ${picocolors_1.default.red(picocolors_1.default.bold("**ERROR**"))} ${picocolors_1.default.red(`No package-lock.json, npm-shrinkwrap.json, or yarn.lock file. You must use either npm@>=5, yarn, or npm-shrinkwrap to manage this project's dependencies.`)} `); } function printSelectingDefaultMessage() { console.info(`${picocolors_1.default.bold("patch-package")}: you have both yarn.lock and package-lock.json Defaulting to using ${picocolors_1.default.bold("npm")} You can override this setting by passing --use-yarn or deleting package-lock.json if you don't need it `); } const detectPackageManager = (appRootPath, overridePackageManager) => { const packageLockExists = fs_extra_1.default.existsSync((0, path_1.join)(appRootPath, "package-lock.json")); const shrinkWrapExists = fs_extra_1.default.existsSync((0, path_1.join)(appRootPath, "npm-shrinkwrap.json")); const yarnLockExists = fs_extra_1.default.existsSync((0, path_1.join)(appRootPath, "yarn.lock")); if ((packageLockExists || shrinkWrapExists) && yarnLockExists) { if (overridePackageManager) { return overridePackageManager; } else { printSelectingDefaultMessage(); return shrinkWrapExists ? "npm-shrinkwrap" : "npm"; } } else if (packageLockExists || shrinkWrapExists) { if (overridePackageManager === "yarn") { printNoYarnLockfileError(); process.exit(1); } else { return shrinkWrapExists ? "npm-shrinkwrap" : "npm"; } } else if (yarnLockExists || (0, find_yarn_workspace_root_1.default)()) { return "yarn"; } else { printNoLockfilesError(); process.exit(1); } throw Error(); }; exports.detectPackageManager = detectPackageManager; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0UGFja2FnZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGV0ZWN0UGFja2FnZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsd0ZBQXdEO0FBQ3hELHdEQUF5QjtBQUN6Qiw0REFBK0I7QUFDL0IsaUNBQTZCO0FBSTdCLFNBQVMsd0JBQXdCO0lBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUM7RUFDWixvQkFBTSxDQUFDLEdBQUcsQ0FBQyxvQkFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLG9CQUFNLENBQUMsR0FBRyxDQUNoRCxvRUFBb0UsQ0FDckU7Q0FDRixDQUFDLENBQUE7QUFDRixDQUFDO0FBRUQsU0FBUyxxQkFBcUI7SUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQztFQUNaLG9CQUFNLENBQUMsR0FBRyxDQUFDLG9CQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksb0JBQU0sQ0FBQyxHQUFHLENBQ2hEOzs7Y0FHVSxDQUNYO0NBQ0YsQ0FBQyxDQUFBO0FBQ0YsQ0FBQztBQUVELFNBQVMsNEJBQTRCO0lBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQ1YsR0FBRyxvQkFBTSxDQUFDLElBQUksQ0FDWixlQUFlLENBQ2hCO3NCQUNpQixvQkFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7OztDQUd2QyxDQUNFLENBQUE7QUFDSCxDQUFDO0FBRU0sTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxXQUFtQixFQUNuQixzQkFBNkMsRUFDN0IsRUFBRTtJQUNsQixNQUFNLGlCQUFpQixHQUFHLGtCQUFFLENBQUMsVUFBVSxDQUNyQyxJQUFBLFdBQUksRUFBQyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsQ0FDdkMsQ0FBQTtJQUNELE1BQU0sZ0JBQWdCLEdBQUcsa0JBQUUsQ0FBQyxVQUFVLENBQ3BDLElBQUEsV0FBSSxFQUFDLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQyxDQUN6QyxDQUFBO0lBQ0QsTUFBTSxjQUFjLEdBQUcsa0JBQUUsQ0FBQyxVQUFVLENBQUMsSUFBQSxXQUFJLEVBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUE7SUFDcEUsSUFBSSxDQUFDLGlCQUFpQixJQUFJLGdCQUFnQixDQUFDLElBQUksY0FBYyxFQUFFO1FBQzdELElBQUksc0JBQXNCLEVBQUU7WUFDMUIsT0FBTyxzQkFBc0IsQ0FBQTtTQUM5QjthQUFNO1lBQ0wsNEJBQTRCLEVBQUUsQ0FBQTtZQUM5QixPQUFPLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO1NBQ25EO0tBQ0Y7U0FBTSxJQUFJLGlCQUFpQixJQUFJLGdCQUFnQixFQUFFO1FBQ2hELElBQUksc0JBQXNCLEtBQUssTUFBTSxFQUFFO1lBQ3JDLHdCQUF3QixFQUFFLENBQUE7WUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNoQjthQUFNO1lBQ0wsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtTQUNuRDtLQUNGO1NBQU0sSUFBSSxjQUFjLElBQUksSUFBQSxrQ0FBaUIsR0FBRSxFQUFFO1FBQ2hELE9BQU8sTUFBTSxDQUFBO0tBQ2Q7U0FBTTtRQUNMLHFCQUFxQixFQUFFLENBQUE7UUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUNoQjtJQUNELE1BQU0sS0FBSyxFQUFFLENBQUE7QUFDZixDQUFDLENBQUE7QUFoQ1ksUUFBQSxvQkFBb0Isd0JBZ0NoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmaW5kV29ya3NwYWNlUm9vdCBmcm9tIFwiZmluZC15YXJuLXdvcmtzcGFjZS1yb290XCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IGNvbG9ycyBmcm9tIFwicGljb2NvbG9yc1wiXG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIi4vcGF0aFwiXG5cbmV4cG9ydCB0eXBlIFBhY2thZ2VNYW5hZ2VyID0gXCJ5YXJuXCIgfCBcIm5wbVwiIHwgXCJucG0tc2hyaW5rd3JhcFwiXG5cbmZ1bmN0aW9uIHByaW50Tm9ZYXJuTG9ja2ZpbGVFcnJvcigpIHtcbiAgY29uc29sZS5sb2coYFxuJHtjb2xvcnMucmVkKGNvbG9ycy5ib2xkKFwiKipFUlJPUioqXCIpKX0gJHtjb2xvcnMucmVkKFxuICAgIGBUaGUgLS11c2UteWFybiBvcHRpb24gd2FzIHNwZWNpZmllZCBidXQgdGhlcmUgaXMgbm8geWFybi5sb2NrIGZpbGVgLFxuICApfVxuYClcbn1cblxuZnVuY3Rpb24gcHJpbnROb0xvY2tmaWxlc0Vycm9yKCkge1xuICBjb25zb2xlLmxvZyhgXG4ke2NvbG9ycy5yZWQoY29sb3JzLmJvbGQoXCIqKkVSUk9SKipcIikpfSAke2NvbG9ycy5yZWQoXG4gICAgYE5vIHBhY2thZ2UtbG9jay5qc29uLCBucG0tc2hyaW5rd3JhcC5qc29uLCBvciB5YXJuLmxvY2sgZmlsZS5cblxuWW91IG11c3QgdXNlIGVpdGhlciBucG1APj01LCB5YXJuLCBvciBucG0tc2hyaW5rd3JhcCB0byBtYW5hZ2UgdGhpcyBwcm9qZWN0J3NcbmRlcGVuZGVuY2llcy5gLFxuICApfVxuYClcbn1cblxuZnVuY3Rpb24gcHJpbnRTZWxlY3RpbmdEZWZhdWx0TWVzc2FnZSgpIHtcbiAgY29uc29sZS5pbmZvKFxuICAgIGAke2NvbG9ycy5ib2xkKFxuICAgICAgXCJwYXRjaC1wYWNrYWdlXCIsXG4gICAgKX06IHlvdSBoYXZlIGJvdGggeWFybi5sb2NrIGFuZCBwYWNrYWdlLWxvY2suanNvblxuRGVmYXVsdGluZyB0byB1c2luZyAke2NvbG9ycy5ib2xkKFwibnBtXCIpfVxuWW91IGNhbiBvdmVycmlkZSB0aGlzIHNldHRpbmcgYnkgcGFzc2luZyAtLXVzZS15YXJuIG9yIGRlbGV0aW5nXG5wYWNrYWdlLWxvY2suanNvbiBpZiB5b3UgZG9uJ3QgbmVlZCBpdFxuYCxcbiAgKVxufVxuXG5leHBvcnQgY29uc3QgZGV0ZWN0UGFja2FnZU1hbmFnZXIgPSAoXG4gIGFwcFJvb3RQYXRoOiBzdHJpbmcsXG4gIG92ZXJyaWRlUGFja2FnZU1hbmFnZXI6IFBhY2thZ2VNYW5hZ2VyIHwgbnVsbCxcbik6IFBhY2thZ2VNYW5hZ2VyID0+IHtcbiAgY29uc3QgcGFja2FnZUxvY2tFeGlzdHMgPSBmcy5leGlzdHNTeW5jKFxuICAgIGpvaW4oYXBwUm9vdFBhdGgsIFwicGFja2FnZS1sb2NrLmpzb25cIiksXG4gIClcbiAgY29uc3Qgc2hyaW5rV3JhcEV4aXN0cyA9IGZzLmV4aXN0c1N5bmMoXG4gICAgam9pbihhcHBSb290UGF0aCwgXCJucG0tc2hyaW5rd3JhcC5qc29uXCIpLFxuICApXG4gIGNvbnN0IHlhcm5Mb2NrRXhpc3RzID0gZnMuZXhpc3RzU3luYyhqb2luKGFwcFJvb3RQYXRoLCBcInlhcm4ubG9ja1wiKSlcbiAgaWYgKChwYWNrYWdlTG9ja0V4aXN0cyB8fCBzaHJpbmtXcmFwRXhpc3RzKSAmJiB5YXJuTG9ja0V4aXN0cykge1xuICAgIGlmIChvdmVycmlkZVBhY2thZ2VNYW5hZ2VyKSB7XG4gICAgICByZXR1cm4gb3ZlcnJpZGVQYWNrYWdlTWFuYWdlclxuICAgIH0gZWxzZSB7XG4gICAgICBwcmludFNlbGVjdGluZ0RlZmF1bHRNZXNzYWdlKClcbiAgICAgIHJldHVybiBzaHJpbmtXcmFwRXhpc3RzID8gXCJucG0tc2hyaW5rd3JhcFwiIDogXCJucG1cIlxuICAgIH1cbiAgfSBlbHNlIGlmIChwYWNrYWdlTG9ja0V4aXN0cyB8fCBzaHJpbmtXcmFwRXhpc3RzKSB7XG4gICAgaWYgKG92ZXJyaWRlUGFja2FnZU1hbmFnZXIgPT09IFwieWFyblwiKSB7XG4gICAgICBwcmludE5vWWFybkxvY2tmaWxlRXJyb3IoKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzaHJpbmtXcmFwRXhpc3RzID8gXCJucG0tc2hyaW5rd3JhcFwiIDogXCJucG1cIlxuICAgIH1cbiAgfSBlbHNlIGlmICh5YXJuTG9ja0V4aXN0cyB8fCBmaW5kV29ya3NwYWNlUm9vdCgpKSB7XG4gICAgcmV0dXJuIFwieWFyblwiXG4gIH0gZWxzZSB7XG4gICAgcHJpbnROb0xvY2tmaWxlc0Vycm9yKClcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuICB0aHJvdyBFcnJvcigpXG59XG4iXX0=