@@ -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,13 @@ 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 ( pkgJsonPath ) as JsonSchemaForNpmPackageJsonFiles ;
559
+ installedVersion = version ;
564
560
}
565
561
566
562
const packageVersionsNonDeprecated : string [ ] = [ ] ;
@@ -590,7 +586,7 @@ function _buildPackageInfo(
590
586
) ;
591
587
}
592
588
593
- const installedPackageJson = npmPackageJson . versions [ installedVersion ] || packageContent ;
589
+ const installedPackageJson = npmPackageJson . versions [ installedVersion ] || pkgJsonExists ;
594
590
if ( ! installedPackageJson ) {
595
591
throw new SchematicsException (
596
592
`An unexpected error happened; package ${ name } has no version ${ installedVersion } .` ,
@@ -783,23 +779,14 @@ function _addPeerDependencies(
783
779
}
784
780
785
781
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
- }
782
+ const { dependencies, devDependencies, peerDependencies } = tree . readJson (
783
+ '/package.json' ,
784
+ ) as JsonSchemaForNpmPackageJsonFiles ;
798
785
799
786
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 ] > ) ,
787
+ ...( Object . entries ( peerDependencies || { } ) as Array < [ string , VersionRange ] > ) ,
788
+ ...( Object . entries ( devDependencies || { } ) as Array < [ string , VersionRange ] > ) ,
789
+ ...( Object . entries ( dependencies || { } ) as Array < [ string , VersionRange ] > ) ,
803
790
] ;
804
791
}
805
792
0 commit comments