From f7b95acb9bc508e01d7d670645049008a7faa566 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Thu, 12 Dec 2019 23:38:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20should=20download=20to=20different=20dir?= =?UTF-8?q?ectories=20for=20different=20pre=E2=80=A6=20(#4922)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fixes #4778 --- packages/@vue/cli/lib/util/loadRemotePreset.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/@vue/cli/lib/util/loadRemotePreset.js b/packages/@vue/cli/lib/util/loadRemotePreset.js index 4162e481a4..c5b8ddc561 100644 --- a/packages/@vue/cli/lib/util/loadRemotePreset.js +++ b/packages/@vue/cli/lib/util/loadRemotePreset.js @@ -1,11 +1,20 @@ const fs = require('fs-extra') const loadPresetFromDir = require('./loadPresetFromDir') -module.exports = async function fetchRemotePreset (name, clone) { +module.exports = async function loadRemotePreset (repository, clone) { const os = require('os') const path = require('path') const download = require('download-git-repo') - const tmpdir = path.join(os.tmpdir(), 'vue-cli') + + const presetName = repository + .replace(/((?:.git)?#.*)/, '') + .split('/') + .slice(-1)[0] + // for direct urls, it's hard to get the correct project name, + // but we need to at least make sure no special characters remaining + .replace(/[:#]/g, '') + + const tmpdir = path.join(os.tmpdir(), 'vue-cli-presets', presetName) // clone will fail if tmpdir already exists // https://github.com/flipxfx/download-git-repo/issues/41 @@ -14,7 +23,7 @@ module.exports = async function fetchRemotePreset (name, clone) { } await new Promise((resolve, reject) => { - download(name, tmpdir, { clone }, err => { + download(repository, tmpdir, { clone }, err => { if (err) return reject(err) resolve() })