1
- const EventEmitter = require ( 'events' )
2
- const fs = require ( 'fs-extra' )
1
+ const path = require ( 'path' )
3
2
const chalk = require ( 'chalk' )
4
3
const debug = require ( 'debug' )
5
4
const execa = require ( 'execa' )
6
5
const inquirer = require ( 'inquirer' )
6
+ const EventEmitter = require ( 'events' )
7
7
const Generator = require ( './Generator' )
8
8
const cloneDeep = require ( 'lodash.clonedeep' )
9
9
const sortObject = require ( './util/sortObject' )
@@ -13,7 +13,8 @@ const { clearConsole } = require('./util/clearConsole')
13
13
const PromptModuleAPI = require ( './PromptModuleAPI' )
14
14
const writeFileTree = require ( './util/writeFileTree' )
15
15
const { formatFeatures } = require ( './util/features' )
16
- const fetchRemotePreset = require ( './util/fetchRemotePreset' )
16
+ const loadLocalPreset = require ( './util/loadLocalPreset' )
17
+ const loadRemotePreset = require ( './util/loadRemotePreset' )
17
18
const generateReadme = require ( './util/generateReadme' )
18
19
19
20
const {
@@ -113,8 +114,13 @@ module.exports = class Creator extends EventEmitter {
113
114
}
114
115
const deps = Object . keys ( preset . plugins )
115
116
deps . forEach ( dep => {
116
- pkg . devDependencies [ dep ] = preset . plugins [ dep ] . version ||
117
+ if ( preset . plugins [ dep ] . _isPreset ) {
118
+ return
119
+ }
120
+ pkg . devDependencies [ dep ] = (
121
+ preset . plugins [ dep ] . version ||
117
122
( / ^ @ v u e / . test ( dep ) ? `^${ latest } ` : `latest` )
123
+ )
118
124
} )
119
125
// write package.json
120
126
await writeFileTree ( context , {
@@ -267,13 +273,13 @@ module.exports = class Creator extends EventEmitter {
267
273
268
274
if ( name in savedPresets ) {
269
275
preset = savedPresets [ name ]
270
- } else if ( name . endsWith ( '.json' ) ) {
271
- preset = await fs . readJson ( name )
276
+ } else if ( name . endsWith ( '.json' ) || / ^ [ . / \\ ] / . test ( name ) ) {
277
+ preset = await loadLocalPreset ( path . resolve ( name ) )
272
278
} else if ( name . includes ( '/' ) ) {
273
279
logWithSpinner ( `Fetching remote preset ${ chalk . cyan ( name ) } ...` )
274
280
this . emit ( 'creation' , { event : 'fetch-remote-preset' } )
275
281
try {
276
- preset = await fetchRemotePreset ( name , clone )
282
+ preset = await loadRemotePreset ( name , clone )
277
283
stopSpinner ( )
278
284
} catch ( e ) {
279
285
stopSpinner ( )
@@ -312,7 +318,8 @@ module.exports = class Creator extends EventEmitter {
312
318
if ( options . prompts ) {
313
319
const prompts = loadModule ( `${ id } /prompts` , this . context )
314
320
if ( prompts ) {
315
- console . log ( `\n${ chalk . cyan ( id ) } ` )
321
+ log ( )
322
+ log ( `${ chalk . cyan ( options . _isPreset ? `Preset options:` : id ) } ` )
316
323
options = await inquirer . prompt ( prompts )
317
324
}
318
325
}
0 commit comments