fix(devkit): fix issue replacing package dependencies in malformed pa… (#16823)

This commit is contained in:
Jason Jean 2023-05-05 16:01:36 -04:00 committed by GitHub
parent 95594d21f7
commit 514e4fa0ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 17 deletions

View File

@ -165,6 +165,14 @@ describe('replaceNrwlPackageWithNxPackage', () => {
});
});
it('should handle broken package.json files', () => {
tree.write('package.json', '{ broken: "json ');
expect(() =>
replaceNrwlPackageWithNxPackage(tree, 'old-package', 'new-package')
).not.toThrow();
});
it('should replace any mentions in files', () => {
expect(tree.read('README.txt').toString()).toContain('new-package');
expect(tree.read('README.txt').toString()).not.toContain('old-package');

View File

@ -38,20 +38,26 @@ function replacePackageInDependencies(
return;
}
updateJson<PackageJson>(tree, path, (packageJson) => {
for (const deps of [
packageJson.dependencies ?? {},
packageJson.devDependencies ?? {},
packageJson.peerDependencies ?? {},
packageJson.optionalDependencies ?? {},
]) {
if (oldPackageName in deps) {
deps[newPackageName] = deps[oldPackageName];
delete deps[oldPackageName];
try {
updateJson<PackageJson>(tree, path, (packageJson) => {
for (const deps of [
packageJson.dependencies ?? {},
packageJson.devDependencies ?? {},
packageJson.peerDependencies ?? {},
packageJson.optionalDependencies ?? {},
]) {
if (oldPackageName in deps) {
deps[newPackageName] = deps[oldPackageName];
delete deps[oldPackageName];
}
}
}
return packageJson;
});
return packageJson;
});
} catch (e) {
console.warn(
`Could not replace ${oldPackageName} with ${newPackageName} in ${path}.`
);
}
});
}

View File

@ -218,10 +218,12 @@ function findCreatedProjectFiles(tree: Tree) {
if (fileName === 'project.json') {
createdProjectFiles.push(change.path);
} else if (fileName === 'package.json') {
const contents: PackageJson = JSON.parse(change.content.toString());
if (contents.nx) {
createdProjectFiles.push(change.path);
}
try {
const contents: PackageJson = JSON.parse(change.content.toString());
if (contents.nx) {
createdProjectFiles.push(change.path);
}
} catch {}
}
}
}