@@ -27,23 +27,15 @@ import {
27
27
addProjectToWorkspace ,
28
28
getWorkspace ,
29
29
} from '../utility/config' ;
30
+ import {
31
+ NodeDependencyType ,
32
+ addPackageJsonDependency ,
33
+ } from '../utility/dependencies' ;
30
34
import { latestVersions } from '../utility/latest-versions' ;
31
35
import { validateProjectName } from '../utility/validation' ;
32
36
import { Schema as LibraryOptions } from './schema' ;
33
37
34
38
35
- type PackageJsonPartialType = {
36
- scripts : {
37
- [ key : string ] : string ;
38
- } ,
39
- dependencies : {
40
- [ key : string ] : string ;
41
- } ,
42
- devDependencies : {
43
- [ key : string ] : string ;
44
- } ,
45
- } ;
46
-
47
39
interface UpdateJsonFn < T > {
48
40
( obj : T ) : T | void ;
49
41
}
@@ -96,39 +88,45 @@ function updateTsConfig(packageName: string, distRoot: string) {
96
88
function addDependenciesToPackageJson ( ) {
97
89
98
90
return ( host : Tree ) => {
99
- if ( ! host . exists ( 'package.json' ) ) { return host ; }
100
-
101
- return updateJsonFile ( host , 'package.json' , ( json : PackageJsonPartialType ) => {
102
-
103
-
104
- if ( ! json [ 'dependencies' ] ) {
105
- json [ 'dependencies' ] = { } ;
106
- }
107
-
108
- json . dependencies = {
109
- '@angular/common' : latestVersions . Angular ,
110
- '@angular/core' : latestVersions . Angular ,
111
- '@angular/compiler' : latestVersions . Angular ,
112
- // De-structure last keeps existing user dependencies.
113
- ...json . dependencies ,
114
- } ;
115
-
116
- if ( ! json [ 'devDependencies' ] ) {
117
- json [ 'devDependencies' ] = { } ;
118
- }
91
+ [
92
+ {
93
+ type : NodeDependencyType . Dev ,
94
+ name : '@angular/compiler-cli' ,
95
+ version : latestVersions . Angular ,
96
+ } ,
97
+ {
98
+ type : NodeDependencyType . Dev ,
99
+ name : '@angular-devkit/build-ng-packagr' ,
100
+ version : latestVersions . DevkitBuildNgPackagr ,
101
+ } ,
102
+ {
103
+ type : NodeDependencyType . Dev ,
104
+ name : '@angular-devkit/build-angular' ,
105
+ version : latestVersions . DevkitBuildNgPackagr ,
106
+ } ,
107
+ {
108
+ type : NodeDependencyType . Dev ,
109
+ name : 'ng-packagr' ,
110
+ version : '^3.0.0' ,
111
+ } ,
112
+ {
113
+ type : NodeDependencyType . Dev ,
114
+ name : 'tsickle' ,
115
+ version : '>=0.29.0' ,
116
+ } ,
117
+ {
118
+ type : NodeDependencyType . Dev ,
119
+ name : 'tslib' ,
120
+ version : '^1.9.0' ,
121
+ } ,
122
+ {
123
+ type : NodeDependencyType . Dev ,
124
+ name : 'typescript' ,
125
+ version : latestVersions . TypeScript ,
126
+ } ,
127
+ ] . forEach ( dependency => addPackageJsonDependency ( host , dependency ) ) ;
119
128
120
- json . devDependencies = {
121
- '@angular/compiler-cli' : latestVersions . Angular ,
122
- '@angular-devkit/build-ng-packagr' : latestVersions . DevkitBuildNgPackagr ,
123
- '@angular-devkit/build-angular' : latestVersions . DevkitBuildNgPackagr ,
124
- 'ng-packagr' : '^3.0.0' ,
125
- 'tsickle' : '>=0.29.0' ,
126
- 'tslib' : '^1.9.0' ,
127
- 'typescript' : latestVersions . TypeScript ,
128
- // De-structure last keeps existing user dependencies.
129
- ...json . devDependencies ,
130
- } ;
131
- } ) ;
129
+ return host ;
132
130
} ;
133
131
}
134
132
@@ -257,6 +255,6 @@ export default function (options: LibraryOptions): Rule {
257
255
context . addTask ( new NodePackageInstallTask ( ) ) ;
258
256
}
259
257
} ,
260
- ] ) ;
258
+ ] ) ( host , context ) ;
261
259
} ;
262
260
}
0 commit comments