From de5a01834cf63e24e498a48c439bda09dcd92310 Mon Sep 17 00:00:00 2001 From: btea <2356281422@qq.com> Date: Wed, 20 Mar 2024 22:22:53 +0800 Subject: [PATCH] fix(init): Don't overwrite existing files when initializing a new project (#556) Co-authored-by: Aaron --- src/core/initialize.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/core/initialize.ts b/src/core/initialize.ts index 0ba0bf49..90dd4c1a 100644 --- a/src/core/initialize.ts +++ b/src/core/initialize.ts @@ -59,6 +59,16 @@ export async function initialize(options: { input.template ??= defaultTemplate; input.packageManager ??= options.packageManager; + const isExists = await fs.pathExists(input.directory); + if (isExists) { + const isEmpty = (await fs.readdir(input.directory)).length === 0; + if (!isEmpty) { + consola.error( + `The directory ${path.resolve(input.directory)} is not empty. Aborted.`, + ); + process.exit(1); + } + } await cloneProject(input); const cdPath = path.relative(process.cwd(), path.resolve(input.directory)); @@ -145,6 +155,9 @@ async function cloneProject({ .move( path.join(directory, '_gitignore'), path.join(directory, '.gitignore'), + { + overwrite: true, + }, ) .catch((err) => consola.warn('Failed to move _gitignore to .gitignore:', err),