@@ -243,13 +243,14 @@ Running this command will ${MigrateController.COMMON_MIGRATE_MESSAGE}`;
243
243
244
244
try {
245
245
this . $logger . info ( "Backup project configuration." ) ;
246
- const backupFolders = MigrateController . folders ;
247
- const embeddedPackagePath = path . join (
248
- projectData . getAppDirectoryRelativePath ( ) ,
249
- "package.json"
246
+ this . backup (
247
+ [
248
+ ...MigrateController . folders ,
249
+ path . join ( projectData . getAppDirectoryRelativePath ( ) , "package.json" ) ,
250
+ ] ,
251
+ backupDir ,
252
+ projectData . projectDir
250
253
) ;
251
- backupFolders . push ( embeddedPackagePath ) ;
252
- this . backup ( backupFolders , backupDir , projectData . projectDir ) ;
253
254
this . $logger . info ( "Backup project configuration complete." ) ;
254
255
} catch ( error ) {
255
256
this . $logger . error ( MigrateController . backupFailMessage ) ;
@@ -342,8 +343,8 @@ Running this command will ${MigrateController.COMMON_MIGRATE_MESSAGE}`;
342
343
platforms,
343
344
allowInvalidVersions,
344
345
} : IMigrationData ) : Promise < boolean > {
346
+ const isMigrate = _ . get ( this . $options , "argv._[0]" ) === "migrate" ;
345
347
const projectData = this . $projectDataService . getProjectData ( projectDir ) ;
346
- const isMigrate = this . $options . argv . _ [ 0 ] === "migrate" ;
347
348
const projectInfo = this . $projectConfigService . detectInfo (
348
349
projectData . projectDir
349
350
) ;
@@ -803,76 +804,88 @@ Running this command will ${MigrateController.COMMON_MIGRATE_MESSAGE}`;
803
804
}
804
805
805
806
private async migrateConfig ( projectData : IProjectData ) {
806
- const embeddedPackagePath = path . resolve (
807
+ this . $logger . info (
808
+ `Migrating project to use ${ constants . CONFIG_FILE_NAME_TS } ...`
809
+ ) ;
810
+
811
+ // app/package.json or src/package.json usually
812
+ const embeddedPackageJsonPath = path . resolve (
807
813
projectData . projectDir ,
808
814
projectData . getAppDirectoryRelativePath ( ) ,
809
815
constants . PACKAGE_JSON_FILE_NAME
810
816
) ;
817
+ this . $logger . debug ( `embeddedPackageJsonPath: ${ embeddedPackageJsonPath } ` ) ;
818
+ // nsconfig.json
811
819
const legacyNsConfigPath = path . resolve (
812
820
projectData . projectDir ,
813
821
constants . CONFIG_NS_FILE_NAME
814
822
) ;
823
+ this . $logger . debug ( `legacyNsConfigPath: ${ legacyNsConfigPath } ` ) ;
824
+ // package.json
825
+ const rootPackageJsonPath : any = path . resolve (
826
+ projectData . projectDir ,
827
+ constants . PACKAGE_JSON_FILE_NAME
828
+ ) ;
829
+ this . $logger . debug ( `rootPackageJsonPath: ${ rootPackageJsonPath } ` ) ;
830
+
815
831
let embeddedPackageData : any = { } ;
816
- if ( this . $fs . exists ( embeddedPackagePath ) ) {
817
- embeddedPackageData = this . $fs . readJson ( embeddedPackagePath ) ;
832
+ if ( this . $fs . exists ( embeddedPackageJsonPath ) ) {
833
+ embeddedPackageData = this . $fs . readJson ( embeddedPackageJsonPath ) ;
818
834
}
835
+
819
836
let legacyNsConfigData : any = { } ;
820
837
if ( this . $fs . exists ( legacyNsConfigPath ) ) {
821
838
legacyNsConfigData = this . $fs . readJson ( legacyNsConfigPath ) ;
822
839
}
823
- const legacyData : any = {
840
+
841
+ let rootPackageJsonData : any = { } ;
842
+ if ( this . $fs . exists ( rootPackageJsonPath ) ) {
843
+ rootPackageJsonData = this . $fs . readJson ( rootPackageJsonPath ) ;
844
+ }
845
+
846
+ const dataToMigrate : any = {
824
847
...embeddedPackageData ,
825
848
...legacyNsConfigData ,
826
849
} ;
827
- const packageJsonPath : any = path . resolve (
828
- projectData . projectDir ,
829
- constants . PACKAGE_JSON_FILE_NAME
830
- ) ;
831
- const packageJsonData : any = this . $fs . readFile ( packageJsonPath ) ;
832
- if ( legacyData . main ) {
833
- packageJsonPath . main = legacyData . main ;
834
- delete legacyData . main ;
850
+
851
+ // move main key into root packagejson
852
+ if ( dataToMigrate . main ) {
853
+ rootPackageJsonData . main = dataToMigrate . main ;
854
+ delete dataToMigrate . main ;
835
855
}
836
- if (
837
- legacyData &&
838
- legacyData . android &&
839
- typeof legacyData . android . codeCache === "string"
840
- ) {
841
- legacyData . android . codeCache = legacyData . android . codeCache === "true" ;
856
+
857
+ // migrate data into nativescript.config.ts
858
+ const success = this . $projectConfigService . setValue ( "" , dataToMigrate ) ;
859
+
860
+ if ( ! success ) {
861
+ this . $errors . fail (
862
+ `Failed to migrate project to use ${ constants . CONFIG_FILE_NAME_TS } . One or more values could not be updated.`
863
+ ) ;
842
864
}
843
- const flattenObjectToPaths = ( obj : any , basePath ?: string ) : any => {
844
- const toPath = ( key : any ) => [ basePath , key ] . filter ( Boolean ) . join ( "." ) ;
845
- return Object . keys ( obj ) . reduce ( ( all : any , key ) => {
846
- if ( typeof obj [ key ] === "object" ) {
847
- return [ ...all , ...flattenObjectToPaths ( obj [ key ] , toPath ( key ) ) ] ;
848
- }
849
- return [
850
- ...all ,
851
- {
852
- key : toPath ( key ) ,
853
- value : obj [ key ] ,
854
- } ,
855
- ] ;
856
- } , [ ] ) ;
857
- } ;
858
- const dotNotationPaths = flattenObjectToPaths ( legacyData ) ;
859
- dotNotationPaths . forEach ( ( p : any ) => {
860
- // this.$logger.info(p.key, p.value);
861
- this . $projectConfigService . setValue ( p . key , p . value ) ;
862
- } ) ;
865
+
866
+ // move app id into nativescript.config.ts
863
867
if (
864
- packageJsonData &&
865
- packageJsonData . nativescript &&
866
- packageJsonData . nativescript . id
868
+ rootPackageJsonData &&
869
+ rootPackageJsonData . nativescript &&
870
+ rootPackageJsonData . nativescript . id
867
871
) {
868
872
this . $projectConfigService . setValue (
869
873
"id" ,
870
- packageJsonData . nativescript . id
874
+ rootPackageJsonData . nativescript . id
871
875
) ;
872
- delete packageJsonData . nativescript ;
876
+ delete rootPackageJsonData . nativescript ;
873
877
}
874
- this . $fs . writeJson ( packageJsonPath , packageJsonData ) ;
875
- this . $logger . info ( `Migrated to ${ constants . CONFIG_FILE_NAME_TS } ` ) ;
878
+
879
+ // save root package.json
880
+ this . $fs . writeJson ( rootPackageJsonPath , rootPackageJsonData ) ;
881
+
882
+ // delete migrated files
883
+ this . $fs . deleteFile ( embeddedPackageJsonPath ) ;
884
+ this . $fs . deleteFile ( legacyNsConfigPath ) ;
885
+
886
+ this . $logger . info (
887
+ `Migrated project to use ${ constants . CONFIG_FILE_NAME_TS } `
888
+ ) ;
876
889
}
877
890
878
891
private async migrateUnitTestRunner (
0 commit comments