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', () => { it('should replace any mentions in files', () => {
expect(tree.read('README.txt').toString()).toContain('new-package'); expect(tree.read('README.txt').toString()).toContain('new-package');
expect(tree.read('README.txt').toString()).not.toContain('old-package'); expect(tree.read('README.txt').toString()).not.toContain('old-package');

View File

@ -38,20 +38,26 @@ function replacePackageInDependencies(
return; return;
} }
updateJson<PackageJson>(tree, path, (packageJson) => { try {
for (const deps of [ updateJson<PackageJson>(tree, path, (packageJson) => {
packageJson.dependencies ?? {}, for (const deps of [
packageJson.devDependencies ?? {}, packageJson.dependencies ?? {},
packageJson.peerDependencies ?? {}, packageJson.devDependencies ?? {},
packageJson.optionalDependencies ?? {}, packageJson.peerDependencies ?? {},
]) { packageJson.optionalDependencies ?? {},
if (oldPackageName in deps) { ]) {
deps[newPackageName] = deps[oldPackageName]; if (oldPackageName in deps) {
delete deps[oldPackageName]; 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') { if (fileName === 'project.json') {
createdProjectFiles.push(change.path); createdProjectFiles.push(change.path);
} else if (fileName === 'package.json') { } else if (fileName === 'package.json') {
const contents: PackageJson = JSON.parse(change.content.toString()); try {
if (contents.nx) { const contents: PackageJson = JSON.parse(change.content.toString());
createdProjectFiles.push(change.path); if (contents.nx) {
} createdProjectFiles.push(change.path);
}
} catch {}
} }
} }
} }