UNPKG

2.95 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.updatePackagesInPackageJson = void 0;
4const schematics_1 = require("@angular-devkit/schematics");
5const ast_utils_1 = require("./ast-utils");
6const fs_1 = require("fs");
7const version_utils_1 = require("./version-utils");
8const semver_1 = require("semver");
9const add_install_task_1 = require("./rules/add-install-task");
10function updatePackagesInPackageJson(migrationFilePath, versionName, options = { skipInstall: false }) {
11 const migrations = JSON.parse((0, fs_1.readFileSync)(migrationFilePath).toString());
12 const packageJsonUpdates = migrations.packageJsonUpdates[versionName];
13 // should never happen
14 if (!packageJsonUpdates) {
15 throw new Error(`Cannot find ${versionName} in migrations.json`);
16 }
17 const updatedPackages = packageJsonUpdates.packages;
18 let needsInstall = false;
19 return (0, schematics_1.chain)([
20 (0, ast_utils_1.updateJsonInTree)('package.json', (json) => {
21 Object.keys(updatedPackages).forEach((p) => {
22 /**
23 * Check the updated version against semver
24 */
25 const cleanUpdatedVersion = (0, version_utils_1.checkAndCleanWithSemver)(p, updatedPackages[p].version);
26 if (json.devDependencies && json.devDependencies[p]) {
27 const cleanDevVersion = (0, version_utils_1.checkAndCleanWithSemver)(p, json.devDependencies[p]);
28 if ((0, semver_1.lt)(cleanDevVersion, cleanUpdatedVersion)) {
29 json.devDependencies[p] = updatedPackages[p].version;
30 needsInstall = true;
31 }
32 }
33 else if (json.dependencies && json.dependencies[p]) {
34 const cleanVersion = (0, version_utils_1.checkAndCleanWithSemver)(p, json.dependencies[p]);
35 if ((0, semver_1.lt)(cleanVersion, cleanUpdatedVersion)) {
36 json.dependencies[p] = updatedPackages[p].version;
37 needsInstall = true;
38 }
39 }
40 else if (updatedPackages[p].alwaysAddToPackageJson) {
41 const cleanVersion = (0, version_utils_1.checkAndCleanWithSemver)(p, json.dependencies[p]);
42 if ((0, semver_1.lt)(cleanVersion, cleanUpdatedVersion)) {
43 if (!json.dependencies)
44 json.dependencies = {};
45 json.dependencies[p] = updatedPackages[p].version;
46 needsInstall = true;
47 }
48 }
49 });
50 return json;
51 }),
52 needsInstall ? (0, add_install_task_1.addInstallTask)(options) : (0, schematics_1.noop)(),
53 ]);
54}
55exports.updatePackagesInPackageJson = updatePackagesInPackageJson;
56//# sourceMappingURL=update-packages-in-package-json.js.map
\No newline at end of file