fix(angular): change rxjs migration to conditional migration (#11771)

This commit is contained in:
Colum Ferry 2022-08-30 15:43:35 +01:00 committed by GitHub
parent bbe7a3679a
commit b86ace50d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 91 additions and 9 deletions

View File

@ -161,6 +161,12 @@
"description": "Update the @angular/cli package version to ~14.1.0.",
"factory": "./src/migrations/update-14-5-2/update-angular-cli"
},
"update-rxjs-7-5-0": {
"cli": "nx",
"version": "14.5.7-beta.0",
"description": "Update the rxjs package version to ~7.5.0 if RxJS 7 is used in workspace.",
"factory": "./src/migrations/update-14-5-7/update-rxjs"
},
"update-angular-cli-version-14-2-0": {
"cli": "nx",
"version": "14.6.0-beta.0",
@ -1460,15 +1466,6 @@
}
}
},
"14.5.7": {
"version": "14.5.7-beta.0",
"packages": {
"rxjs": {
"version": "~7.5.0",
"alwaysAddToPackageJson": false
}
}
},
"14.6.0": {
"version": "14.6.0-beta.0",
"packages": {

View File

@ -0,0 +1,55 @@
import { readJson, Tree, writeJson } from '@nrwl/devkit';
import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing';
import updateRxjs from './update-rxjs';
describe('update-rxjs migration', () => {
let tree: Tree;
beforeEach(() => {
tree = createTreeWithEmptyWorkspace();
});
it('should update rxjs version when defined as a dev dependency and greater than 7.0.0', async () => {
writeJson(tree, 'package.json', {
devDependencies: { rxjs: '~7.0.0' },
});
await updateRxjs(tree);
const { devDependencies } = readJson(tree, 'package.json');
expect(devDependencies['rxjs']).toEqual('~7.5.0');
});
it('should update rxjs version when defined as a dependency and greater than 7.0.0', async () => {
writeJson(tree, 'package.json', {
dependencies: { rxjs: '~7.0.0' },
});
await updateRxjs(tree);
const { dependencies } = readJson(tree, 'package.json');
expect(dependencies['rxjs']).toEqual('~7.5.0');
});
it('should not update rxjs when it is less than 7.0.0', async () => {
writeJson(tree, 'package.json', {
dependencies: { rxjs: '~6.5.0' },
});
await updateRxjs(tree);
const { dependencies } = readJson(tree, 'package.json');
expect(dependencies['rxjs']).toEqual('~6.5.0');
});
it('should not update rxjs when it is less than 7.0.0', async () => {
writeJson(tree, 'package.json', {
devDependencies: { rxjs: '~6.5.0' },
});
await updateRxjs(tree);
const { devDependencies } = readJson(tree, 'package.json');
expect(devDependencies['rxjs']).toEqual('~6.5.0');
});
});

View File

@ -0,0 +1,30 @@
import { formatFiles, Tree, updateJson } from '@nrwl/devkit';
import { gte, minVersion } from 'semver';
const rxjsVersion = '~7.5.0';
export default async function (tree: Tree) {
let shouldFormat = false;
updateJson(tree, 'package.json', (json) => {
if (
json.devDependencies?.['rxjs'] &&
gte(minVersion(json.devDependencies?.['rxjs']), '7.0.0')
) {
json.devDependencies['rxjs'] = rxjsVersion;
shouldFormat = true;
} else if (
json.dependencies?.['rxjs'] &&
gte(minVersion(json.dependencies?.['rxjs']), '7.0.0')
) {
json.dependencies['rxjs'] = rxjsVersion;
shouldFormat = true;
}
return json;
});
if (shouldFormat) {
await formatFiles(tree);
}
}