@@ -267,13 +267,7 @@ function _performUpdate(
267
267
throw new SchematicsException ( 'Could not find a package.json. Are you in a Node project?' ) ;
268
268
}
269
269
270
- let packageJson : JsonSchemaForNpmPackageJsonFiles ;
271
- try {
272
- packageJson = JSON . parse ( packageJsonContent . toString ( ) ) as JsonSchemaForNpmPackageJsonFiles ;
273
- } catch ( e ) {
274
- assertIsError ( e ) ;
275
- throw new SchematicsException ( 'package.json could not be parsed: ' + e . message ) ;
276
- }
270
+ const packageJson = tree . readJson ( '/package.json' ) as JsonSchemaForNpmPackageJsonFiles ;
277
271
278
272
const updateDependency = ( deps : Record < string , string > , name : string , newVersion : string ) => {
279
273
const oldVersion = deps [ name ] ;
@@ -556,11 +550,15 @@ function _buildPackageInfo(
556
550
557
551
// Find out the currently installed version. Either from the package.json or the node_modules/
558
552
// TODO: figure out a way to read package-lock.json and/or yarn.lock.
553
+ const pkgJsonPath = `/node_modules/${ name } /package.json` ;
554
+ const pkgJsonExists = tree . exists ( pkgJsonPath ) ;
555
+
559
556
let installedVersion : string | undefined | null ;
560
- const packageContent = tree . read ( `/node_modules/${ name } /package.json` ) ;
561
- if ( packageContent ) {
562
- const content = JSON . parse ( packageContent . toString ( ) ) as JsonSchemaForNpmPackageJsonFiles ;
563
- installedVersion = content . version ;
557
+ if ( pkgJsonExists ) {
558
+ const { version } = tree . readJson (
559
+ `/node_modules/${ name } /package.json` ,
560
+ ) as JsonSchemaForNpmPackageJsonFiles ;
561
+ installedVersion = version ;
564
562
}
565
563
566
564
const packageVersionsNonDeprecated : string [ ] = [ ] ;
@@ -590,7 +588,7 @@ function _buildPackageInfo(
590
588
) ;
591
589
}
592
590
593
- const installedPackageJson = npmPackageJson . versions [ installedVersion ] || packageContent ;
591
+ const installedPackageJson = npmPackageJson . versions [ installedVersion ] || pkgJsonExists ;
594
592
if ( ! installedPackageJson ) {
595
593
throw new SchematicsException (
596
594
`An unexpected error happened; package ${ name } has no version ${ installedVersion } .` ,
@@ -783,23 +781,14 @@ function _addPeerDependencies(
783
781
}
784
782
785
783
function _getAllDependencies ( tree : Tree ) : Array < readonly [ string , VersionRange ] > {
786
- const packageJsonContent = tree . read ( '/package.json' ) ;
787
- if ( ! packageJsonContent ) {
788
- throw new SchematicsException ( 'Could not find a package.json. Are you in a Node project?' ) ;
789
- }
790
-
791
- let packageJson : JsonSchemaForNpmPackageJsonFiles ;
792
- try {
793
- packageJson = JSON . parse ( packageJsonContent . toString ( ) ) as JsonSchemaForNpmPackageJsonFiles ;
794
- } catch ( e ) {
795
- assertIsError ( e ) ;
796
- throw new SchematicsException ( 'package.json could not be parsed: ' + e . message ) ;
797
- }
784
+ const { dependencies, devDependencies, peerDependencies } = tree . readJson (
785
+ '/package.json' ,
786
+ ) as JsonSchemaForNpmPackageJsonFiles ;
798
787
799
788
return [
800
- ...( Object . entries ( packageJson . peerDependencies || { } ) as Array < [ string , VersionRange ] > ) ,
801
- ...( Object . entries ( packageJson . devDependencies || { } ) as Array < [ string , VersionRange ] > ) ,
802
- ...( Object . entries ( packageJson . dependencies || { } ) as Array < [ string , VersionRange ] > ) ,
789
+ ...( Object . entries ( peerDependencies || { } ) as Array < [ string , VersionRange ] > ) ,
790
+ ...( Object . entries ( devDependencies || { } ) as Array < [ string , VersionRange ] > ) ,
791
+ ...( Object . entries ( dependencies || { } ) as Array < [ string , VersionRange ] > ) ,
803
792
] ;
804
793
}
805
794
0 commit comments