From a1097f27e28a00e86afaab0094069a332267e8fd Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Wed, 18 Jul 2018 02:40:03 +0800 Subject: [PATCH] fix(create): clear tmpdir before cloning remote preset, fix #1878 (#1880) --- packages/@vue/cli/lib/util/fetchRemotePreset.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/@vue/cli/lib/util/fetchRemotePreset.js b/packages/@vue/cli/lib/util/fetchRemotePreset.js index faeb7bcfff..f40c115714 100644 --- a/packages/@vue/cli/lib/util/fetchRemotePreset.js +++ b/packages/@vue/cli/lib/util/fetchRemotePreset.js @@ -1,4 +1,6 @@ -module.exports = function fetchRemotePreset (name, clone) { +const fs = require('fs-extra') + +module.exports = async function fetchRemotePreset (name, clone) { // github shorthand fastpath if (!clone && /^[\w_-]+\/[\w_-]+$/.test(name)) { const { request } = require('@vue/cli-shared-utils') @@ -12,6 +14,12 @@ module.exports = function fetchRemotePreset (name, clone) { const download = require('download-git-repo') const tmpdir = path.join(os.tmpdir(), 'vue-cli') + // clone will fail if tmpdir already exists + // https://github.com/flipxfx/download-git-repo/issues/41 + if (clone) { + await fs.remove(tmpdir) + } + return new Promise((resolve, reject) => { download(name, tmpdir, { clone }, err => { if (err) return reject(err)