Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit c29c599

Browse files
brandonrobertsvsavkin
authored andcommittedFeb 8, 2020
fix(core): check semver before updating dependencies using migrations.json
1 parent b234e5e commit c29c599

File tree

1 file changed

+29
-4
lines changed

1 file changed

+29
-4
lines changed
 

‎packages/workspace/src/utils/update-packages-in-package-json.ts

+29-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { updateJsonInTree } from './ast-utils';
22
import { readFileSync } from 'fs';
3+
import { checkAndCleanWithSemver } from './version-utils';
4+
import { lt } from 'semver';
35

46
export function updatePackagesInPackageJson(
57
migrationFilePath: string,
@@ -16,13 +18,36 @@ export function updatePackagesInPackageJson(
1618
const updatedPackages = packageJsonUpdates.packages;
1719
return updateJsonInTree('package.json', json => {
1820
Object.keys(updatedPackages).forEach(p => {
21+
/**
22+
* Check the updated version against semver
23+
*/
24+
const cleanUpdatedVersion = checkAndCleanWithSemver(
25+
p,
26+
updatedPackages[p].version
27+
);
28+
1929
if (json.devDependencies && json.devDependencies[p]) {
20-
json.devDependencies[p] = updatedPackages[p].version;
30+
const cleanDevVersion = checkAndCleanWithSemver(
31+
p,
32+
json.devDependencies[p]
33+
);
34+
35+
if (lt(cleanDevVersion, cleanUpdatedVersion)) {
36+
json.devDependencies[p] = updatedPackages[p].version;
37+
}
2138
} else if (json.dependencies && json.dependencies[p]) {
22-
json.dependencies[p] = updatedPackages[p].version;
39+
const cleanVersion = checkAndCleanWithSemver(p, json.dependencies[p]);
40+
41+
if (lt(cleanVersion, cleanUpdatedVersion)) {
42+
json.dependencies[p] = updatedPackages[p].version;
43+
}
2344
} else if (updatedPackages[p].alwaysAddToPackageJson) {
24-
if (!json.dependencies) json.dependencies = {};
25-
json.dependencies[p] = updatedPackages[p].version;
45+
const cleanVersion = checkAndCleanWithSemver(p, json.dependencies[p]);
46+
47+
if (lt(cleanVersion, cleanUpdatedVersion)) {
48+
if (!json.dependencies) json.dependencies = {};
49+
json.dependencies[p] = updatedPackages[p].version;
50+
}
2651
}
2752
});
2853
return json;

0 commit comments

Comments
 (0)
Please sign in to comment.