@@ -51,7 +51,8 @@ module.exports = class Creator extends EventEmitter {
51
51
52
52
this . name = name
53
53
this . context = process . env . VUE_CLI_CONTEXT = context
54
- const { presetPrompt, featurePrompt } = this . resolveIntroPrompts ( )
54
+ const { vueVersionPrompt, presetPrompt, featurePrompt } = this . resolveIntroPrompts ( )
55
+ this . vueVersionPrompt = vueVersionPrompt
55
56
this . presetPrompt = presetPrompt
56
57
this . featurePrompt = featurePrompt
57
58
this . outroPrompts = this . resolveOutroPrompts ( )
@@ -307,6 +308,8 @@ module.exports = class Creator extends EventEmitter {
307
308
this . promptCompleteCbs . forEach ( cb => cb ( answers , preset ) )
308
309
}
309
310
311
+ preset . vueVersion = answers . vueVersion
312
+
310
313
// validate
311
314
validatePreset ( preset )
312
315
@@ -398,10 +401,11 @@ module.exports = class Creator extends EventEmitter {
398
401
399
402
resolveIntroPrompts ( ) {
400
403
const presets = this . getPresets ( )
401
- const presetChoices = Object . keys ( presets ) . map ( name => {
404
+ const presetChoices = Object . entries ( presets ) . map ( ( [ name , preset ] ) => {
402
405
return {
403
- name : `${ name } (${ formatFeatures ( presets [ name ] ) } )` ,
404
- value : name
406
+ name : `${ name } (${ formatFeatures ( name , preset ) } )` ,
407
+ value : name ,
408
+ when : ( answers ) => ! preset . vueVersion || preset . vueVersion === answers . vueVersion
405
409
}
406
410
} )
407
411
const presetPrompt = {
@@ -416,6 +420,22 @@ module.exports = class Creator extends EventEmitter {
416
420
}
417
421
]
418
422
}
423
+ const vueVersionPrompt = {
424
+ when : answers => answers . preset === 'default' ,
425
+ name : 'vueVersion' ,
426
+ type : 'list' ,
427
+ message : `Choose a version of Vue.js that you want to start the project with` ,
428
+ choices : [
429
+ {
430
+ name : '2.x' ,
431
+ value : '2'
432
+ } ,
433
+ {
434
+ name : '3.x (preview)' ,
435
+ value : '3'
436
+ }
437
+ ]
438
+ }
419
439
const featurePrompt = {
420
440
name : 'features' ,
421
441
when : isManualMode ,
@@ -425,6 +445,7 @@ module.exports = class Creator extends EventEmitter {
425
445
pageSize : 10
426
446
}
427
447
return {
448
+ vueVersionPrompt,
428
449
presetPrompt,
429
450
featurePrompt
430
451
}
@@ -511,6 +532,7 @@ module.exports = class Creator extends EventEmitter {
511
532
} )
512
533
const prompts = [
513
534
this . presetPrompt ,
535
+ this . vueVersionPrompt ,
514
536
this . featurePrompt ,
515
537
...this . injectedPrompts ,
516
538
...this . outroPrompts
0 commit comments