1
1
const ejs = require ( 'ejs' )
2
2
const slash = require ( 'slash' )
3
3
const debug = require ( 'debug' )
4
+ const configMap = require ( './util/configMap' )
4
5
const GeneratorAPI = require ( './GeneratorAPI' )
5
6
const sortObject = require ( './util/sortObject' )
6
7
const writeFileTree = require ( './util/writeFileTree' )
7
8
8
9
module . exports = class Generator {
9
- constructor ( context , pkg , plugins , completeCbs = [ ] ) {
10
+ constructor ( context , pkg , plugins , extractConfigFiles , completeCbs = [ ] ) {
10
11
this . context = context
11
12
this . plugins = plugins
12
13
this . pkg = pkg
@@ -26,6 +27,11 @@ module.exports = class Generator {
26
27
const api = new GeneratorAPI ( id , this , options , rootOptions || { } )
27
28
apply ( api , options , rootOptions )
28
29
} )
30
+ // if the user has chosen so, extract configs from package.json into
31
+ // dedicated files.
32
+ if ( extractConfigFiles ) {
33
+ this . extractConfigFiles ( )
34
+ }
29
35
}
30
36
31
37
async generate ( ) {
@@ -38,6 +44,17 @@ module.exports = class Generator {
38
44
await writeFileTree ( this . context , this . files )
39
45
}
40
46
47
+ extractConfigFiles ( ) {
48
+ for ( const key in this . pkg ) {
49
+ if ( configMap [ key ] ) {
50
+ const value = this . pkg [ key ]
51
+ const { transform, filename } = configMap [ key ]
52
+ this . files [ filename ] = transform ( value )
53
+ delete this . pkg [ key ]
54
+ }
55
+ }
56
+ }
57
+
41
58
sortPkg ( ) {
42
59
// ensure package.json keys has readable order
43
60
this . pkg . dependencies = sortObject ( this . pkg . dependencies )
0 commit comments