diff --git a/.changeset/friendly-hotels-explode.md b/.changeset/friendly-hotels-explode.md new file mode 100644 index 000000000..85de23643 --- /dev/null +++ b/.changeset/friendly-hotels-explode.md @@ -0,0 +1,5 @@ +--- +'create-astro': minor +--- + +forced degit template extraction in case of non empty installation directory diff --git a/packages/create-astro/src/index.ts b/packages/create-astro/src/index.ts index 1b337a368..1427327ce 100644 --- a/packages/create-astro/src/index.ts +++ b/packages/create-astro/src/index.ts @@ -20,26 +20,6 @@ export function mkdirp(dir: string) { } } -/** - * Delete all files, subdirectories, and symlinks in a given - * directory. - * - * @param dir the directory to empty - * @returns a promise for emptying a given directory - */ -export async function emptyDir(dir: string) { - const items = await fs.promises.readdir(dir); - return Promise.all( - items.map(async (item) => { - const itemPath = path.join(dir, item); - const stat = await fs.promises.stat(itemPath); - return stat.isDirectory() - ? fs.promises.rm(itemPath, { recursive: true, force: true }) // To remove directories - : fs.promises.unlink(itemPath); // Remove files and symlinks - }) - ); -} - const { version } = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url), 'utf-8')); const POSTPROCESS_FILES = ['package.json', 'astro.config.mjs', 'CHANGELOG.md']; // some files need processing after copying. @@ -57,14 +37,13 @@ export async function main() { const response = await prompts({ type: 'confirm', name: 'forceOverwrite', - message: `Directory not empty. Delete ${cwd} to continue?`, + message: 'Directory not empty. Continue [force overwrite]?', initial: false, }); if (!response.forceOverwrite) { process.exit(1); } - - await emptyDir(cwd); + mkdirp(cwd); } } else { mkdirp(cwd);