UNPKG

syncpack

Version:

Manage multiple package.json files, such as in Lerna Monorepos and Yarn/Pnpm Workspaces

54 lines (53 loc) 2.53 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; exports.__esModule = true; exports.fixMismatchesToDisk = exports.fixMismatches = void 0; var chalk_1 = __importDefault(require("chalk")); var fs_extra_1 = require("fs-extra"); var os_1 = require("os"); var path_1 = require("path"); var get_dependency_types_1 = require("./lib/get-dependency-types"); var get_highest_version_1 = require("./lib/get-highest-version"); var get_installations_1 = require("./lib/get-installations"); var get_wrappers_1 = require("./lib/get-wrappers"); var log_1 = require("./lib/log"); exports.fixMismatches = function (dependencyTypes, filter, wrappers) { var iterator = get_installations_1.getMismatchedDependencies(dependencyTypes, wrappers); var mismatches = Array.from(iterator).filter(function (_a) { var name = _a.name; return name.search(filter) !== -1; }); mismatches.forEach(function (installedPackage) { var versions = installedPackage.installations.map(function (installation) { return installation.version; }); var newest = get_highest_version_1.getHighestVersion(versions); installedPackage.installations.forEach(function (_a) { var type = _a.type, name = _a.name, source = _a.source; var dependencies = source.contents[type]; if (dependencies) { dependencies[name] = newest; } }); }); }; exports.fixMismatchesToDisk = function (_a) { var dev = _a.dev, filter = _a.filter, indent = _a.indent, peer = _a.peer, prod = _a.prod, source = _a.source; var toJson = function (wrapper) { return "" + JSON.stringify(wrapper.contents, null, indent) + os_1.EOL; }; var dependencyTypes = get_dependency_types_1.getDependencyTypes({ dev: dev, peer: peer, prod: prod }); var wrappers = get_wrappers_1.getWrappers({ source: source }); var allBefore = wrappers.map(toJson); exports.fixMismatches(dependencyTypes, filter, wrappers); wrappers.forEach(function (wrapper, i) { var shortPath = path_1.relative(process.cwd(), wrapper.filePath); var before = allBefore[i]; var after = toJson(wrapper); if (before !== after) { fs_extra_1.writeFileSync(wrapper.filePath, after); log_1.log(chalk_1["default"].green('✓'), shortPath); } else { log_1.log(chalk_1["default"].dim('-', shortPath)); } }); };