@@ -13,6 +13,7 @@ const PromptModuleAPI = require('./PromptModuleAPI')
13
13
const writeFileTree = require ( './util/writeFileTree' )
14
14
const formatFeatures = require ( './util/formatFeatures' )
15
15
const setupDevProject = require ( './util/setupDevProject' )
16
+ const fetchRemotePreset = require ( './util/fetchRemotePreset' )
16
17
17
18
const {
18
19
defaults,
@@ -60,7 +61,7 @@ module.exports = class Creator {
60
61
let preset
61
62
if ( cliOptions . preset ) {
62
63
// vue create foo --preset bar
63
- preset = this . resolvePreset ( cliOptions . preset )
64
+ preset = await this . resolvePreset ( cliOptions . preset , cliOptions . clone )
64
65
} else if ( cliOptions . default ) {
65
66
// vue create foo --default
66
67
preset = defaults . presets . default
@@ -194,7 +195,7 @@ module.exports = class Creator {
194
195
195
196
let preset
196
197
if ( answers . preset && answers . preset !== '__manual__' ) {
197
- preset = this . resolvePreset ( answers . preset )
198
+ preset = await this . resolvePreset ( answers . preset )
198
199
} else {
199
200
// manual
200
201
preset = {
@@ -218,9 +219,24 @@ module.exports = class Creator {
218
219
return preset
219
220
}
220
221
221
- resolvePreset ( name ) {
222
+ async resolvePreset ( name , clone ) {
223
+ let preset
222
224
const savedPresets = loadOptions ( ) . presets || { }
223
- let preset = savedPresets [ name ]
225
+
226
+ if ( name . includes ( '/' ) ) {
227
+ logWithSpinner ( `Fetching remote preset ${ chalk . cyan ( name ) } ...` )
228
+ try {
229
+ preset = await fetchRemotePreset ( name , clone )
230
+ stopSpinner ( )
231
+ } catch ( e ) {
232
+ stopSpinner ( )
233
+ error ( `Failed fetching remote preset ${ chalk . cyan ( name ) } :` )
234
+ throw e
235
+ }
236
+ } else {
237
+ preset = savedPresets [ name ]
238
+ }
239
+
224
240
// use default preset if user has not overwritten it
225
241
if ( name === 'default' && ! preset ) {
226
242
preset = defaults . presets . default
0 commit comments