1
1
const fs = require ( 'fs-extra' )
2
2
const loadPresetFromDir = require ( './loadPresetFromDir' )
3
3
4
- module . exports = async function fetchRemotePreset ( name , clone ) {
4
+ module . exports = async function loadRemotePreset ( repository , clone ) {
5
5
const os = require ( 'os' )
6
6
const path = require ( 'path' )
7
7
const download = require ( 'download-git-repo' )
8
- const tmpdir = path . join ( os . tmpdir ( ) , 'vue-cli' )
8
+
9
+ const presetName = repository
10
+ . replace ( / ( (?: .g i t ) ? # .* ) / , '' )
11
+ . split ( '/' )
12
+ . slice ( - 1 ) [ 0 ]
13
+ // for direct urls, it's hard to get the correct project name,
14
+ // but we need to at least make sure no special characters remaining
15
+ . replace ( / [: # ] / g, '' )
16
+
17
+ const tmpdir = path . join ( os . tmpdir ( ) , 'vue-cli-presets' , presetName )
9
18
10
19
// clone will fail if tmpdir already exists
11
20
// https://github.com/flipxfx/download-git-repo/issues/41
@@ -14,7 +23,7 @@ module.exports = async function fetchRemotePreset (name, clone) {
14
23
}
15
24
16
25
await new Promise ( ( resolve , reject ) => {
17
- download ( name , tmpdir , { clone } , err => {
26
+ download ( repository , tmpdir , { clone } , err => {
18
27
if ( err ) return reject ( err )
19
28
resolve ( )
20
29
} )
0 commit comments