@@ -42,40 +42,40 @@ export class PackageJsonToMarkdown {
42
42
let dependenciesMarkdown = '' ;
43
43
let devDependenciesMarkdown = '' ;
44
44
let peerDependenciesMarkdown = '' ;
45
- const dependenciesRequests : Promise < { name : string , version : string , description : string } > [ ] = [ ] ;
45
+ const dependenciesRequests : Promise < { name : string , version : string , description : string , license : string } > [ ] = [ ] ;
46
46
dependencies . sort ( ArrayUtils . sortStrings ) . forEach ( pckName => {
47
- dependenciesRequests . push ( this . makeRequest ( pckName ) ) ;
47
+ dependenciesRequests . push ( this . fetchPackageInformation ( pckName , workspaceDirectory ) ) ;
48
48
} ) ;
49
49
Promise . all ( dependenciesRequests ) . then ( responses => {
50
50
dependenciesMarkdown = this . updateMarkdownRow ( responses , localPackages ) ;
51
51
} ) . then ( ( ) => {
52
- const devDependenciesRequests : Promise < { name : string , version : string , description : string } > [ ] = [ ] ;
52
+ const devDependenciesRequests : Promise < { name : string , version : string , description : string , license : string } > [ ] = [ ] ;
53
53
devDependencies . sort ( ArrayUtils . sortStrings ) . forEach ( pckName => {
54
- devDependenciesRequests . push ( this . makeRequest ( pckName ) ) ;
54
+ devDependenciesRequests . push ( this . fetchPackageInformation ( pckName , workspaceDirectory ) ) ;
55
55
} ) ;
56
56
Promise . all ( devDependenciesRequests ) . then ( responses => {
57
57
devDependenciesMarkdown = this . updateMarkdownRow ( responses , localPackages ) ;
58
58
} ) . then ( ( ) => {
59
- const peerDependenciesRequests : Promise < { name : string , version : string , description : string } > [ ] = [ ] ;
59
+ const peerDependenciesRequests : Promise < { name : string , version : string , description : string , license : string } > [ ] = [ ] ;
60
60
peerDependencies . sort ( ArrayUtils . sortStrings ) . forEach ( pckName => {
61
- peerDependenciesRequests . push ( this . makeRequest ( pckName ) ) ;
61
+ peerDependenciesRequests . push ( this . fetchPackageInformation ( pckName , workspaceDirectory ) ) ;
62
62
} ) ;
63
63
Promise . all ( peerDependenciesRequests ) . then ( responses => {
64
64
peerDependenciesMarkdown = this . updateMarkdownRow ( responses , localPackages ) ;
65
65
} ) . then ( ( ) => {
66
66
const markdownContent =
67
67
'# Package.json\n\n' +
68
68
'## Dependencies\n\n' +
69
- '| Name | Local version | Latest Version | Description|\n' +
70
- '| ---- | ---- | ---- |:-----------|\n' +
69
+ '| Name | Local version | Latest Version | License | Description|\n' +
70
+ '| ---- | ---- | ---- | ---- | :-----------|\n' +
71
71
dependenciesMarkdown + '\n' +
72
72
'## Dev dependencies\n\n' +
73
- '| Name | Local version | Latest Version | Description|\n' +
74
- '| ---- | ---- | ---- |:-----------|\n' +
73
+ '| Name | Local version | Latest Version | License | Description|\n' +
74
+ '| ---- | ---- | ---- | ---- | :-----------|\n' +
75
75
devDependenciesMarkdown + '\n' +
76
76
'## Peer dependencies\n\n' +
77
- '| Name | Local version | Latest Version | Description|\n' +
78
- '| ---- | ---- | ---- |:-----------|\n' +
77
+ '| Name | Local version | Latest Version | License | Description|\n' +
78
+ '| ---- | ---- | ---- | ---- | :-----------|\n' +
79
79
peerDependenciesMarkdown ;
80
80
const fsUtils = new FileSystemUtils ( ) ;
81
81
fsUtils . writeFileAndOpen ( path . join ( workspaceDirectory , this . config . packageJsonMarkdownFilename ) , markdownContent ) ;
@@ -84,12 +84,12 @@ export class PackageJsonToMarkdown {
84
84
} ) ;
85
85
}
86
86
87
- private updateMarkdownRow ( responses : { name : string ; version : string ; description : string ; } [ ] , localPackages : { [ pkgName : string ] : string ; } ) : string {
87
+ private updateMarkdownRow ( responses : { name : string ; version : string ; description : string ; license : string } [ ] , localPackages : { [ pkgName : string ] : string ; } ) : string {
88
88
let markdownStr : string = '' ;
89
89
responses . sort ( ( first , second ) => ( first . name . replace ( '@' , '' ) < second . name . replace ( '@' , '' ) ? - 1 : 1 ) ) . forEach ( response => {
90
90
if ( response ) {
91
91
const localVersion = localPackages [ response . name ] ;
92
- markdownStr += `| ${ response . name } | ${ localVersion } | ${ response . version } | ${ response . description } |\n` ;
92
+ markdownStr += `| ${ response . name } | ${ localVersion } | ${ response . version } | ${ response . license } | ${ response . description } |\n` ;
93
93
}
94
94
} ) ;
95
95
return markdownStr ;
@@ -107,21 +107,34 @@ export class PackageJsonToMarkdown {
107
107
} ) ;
108
108
}
109
109
110
- private makeRequest ( pckName : string ) : Promise < { name : string , version : string , description : string } > {
110
+ private fetchPackageInformation ( pckName : string , workspaceDirectory : string ) : Promise < { name : string , version : string , description : string , license : string } > {
111
111
const uri = `/${ pckName } ` ;
112
- const request = fetch . json ( uri )
112
+ const license = this . getLicenseInformationFromNodeModulesFolder ( workspaceDirectory , pckName ) ;
113
+ const result = fetch . json ( uri )
113
114
. then ( ( json : any ) => {
114
115
let packageName = json . name ;
115
116
packageName = packageName ?. replace ( '|' , '|' ) ;
116
117
let packageDescription = json . description ;
117
118
packageDescription = packageDescription ?. replace ( '|' , '|' ) ;
118
119
let packageVersion = json [ 'dist-tags' ] . latest ;
119
120
packageVersion = packageVersion ?. replace ( '|' , '|' ) ;
120
- return { name : packageName , description : packageDescription , version : packageVersion } ;
121
+ return { name : packageName , description : packageDescription , version : packageVersion , license : license } ;
121
122
} )
122
123
. catch ( ( ) => {
123
- return { name : pckName , description : 'N/A' , version : 'N/A' } ;
124
+ return { name : pckName , description : 'N/A' , version : 'N/A' , license : license } ;
124
125
} ) ;
125
- return request ;
126
+ return result ;
127
+ }
128
+
129
+ private getLicenseInformationFromNodeModulesFolder ( workspaceDirectory : string , pckName : string ) : string {
130
+ const pckFolder = path . join ( workspaceDirectory , 'node_modules' , pckName ) ;
131
+ const packageJsonFile = path . join ( pckFolder , 'package.json' ) ;
132
+ const contents = fs . readFileSync ( packageJsonFile ) . toString ( 'utf8' ) ;
133
+ const packageJson = JSON . parse ( contents ) ;
134
+ if ( packageJson . license ) {
135
+ return packageJson . license ;
136
+ } else {
137
+ return 'N/A' ;
138
+ }
126
139
}
127
140
}
0 commit comments