From 02c156cc2c7090ee7a7ae105d645abed485055c5 Mon Sep 17 00:00:00 2001 From: Redish101 Date: Tue, 2 Jul 2024 08:21:00 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat(create-umi):=20=E4=B8=BAcreate-umi?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=BE=E7=BD=AE=E9=A1=B9=E7=9B=AE=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E5=8F=8A=E8=B7=AF=E5=BE=84=E7=9A=84=E6=AD=A5=E9=AA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/create-umi/src/index.ts | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/create-umi/src/index.ts b/packages/create-umi/src/index.ts index 759ae4cc99c3..df768abd1a12 100644 --- a/packages/create-umi/src/index.ts +++ b/packages/create-umi/src/index.ts @@ -99,13 +99,30 @@ export default async ({ // plugin params let pluginName = `umi-plugin-${name || 'demo'}`; - const target = name ? join(cwd, name) : cwd; + let target = name ? join(cwd, name) : cwd; const { isCancel, text, select, intro, outro } = clackPrompts; const exitPrompt = () => { outro(chalk.red('Exit create-umi')); process.exit(1); }; + const setName = async () => { + name = (await text({ + message: "What's the project name?", + initialValue: name || 'my-app', + validate: (value: string) => { + if (!value.length) { + return 'Please input project name'; + } + if (fsExtra.existsSync(join(cwd, value))) { + return `Folder ${value} already exists`; + } + if (!/^[a-zA-Z0-9_-]+$/.test(value)) { + return 'Name should only contain letters, numbers, underscores and dashes'; + } + }, + })) as string; + }; const selectAppTemplate = async () => { appTemplate = (await select({ message: 'Pick Umi App Template', @@ -159,6 +176,13 @@ export default async ({ const internalTemplatePrompts = async () => { intro(chalk.bgHex('#19BDD2')(' create-umi ')); + await setName(); + if (isCancel(name)) { + exitPrompt(); + } + + target = join(cwd, name); + await selectAppTemplate(); if (isCancel(appTemplate)) { exitPrompt(); From 8e6eada0ce5d109344aeed37d05201181ef4a98e Mon Sep 17 00:00:00 2001 From: Redish101 Date: Thu, 4 Jul 2024 14:50:35 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix(create-umi):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BA=86`.`=E4=B8=8D=E8=83=BD=E4=BD=9C=E4=B8=BA=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E6=96=87=E4=BB=B6=E5=A4=B9=E7=9A=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/create-umi/src/index.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/create-umi/src/index.ts b/packages/create-umi/src/index.ts index df768abd1a12..2b600d87d2cf 100644 --- a/packages/create-umi/src/index.ts +++ b/packages/create-umi/src/index.ts @@ -108,18 +108,15 @@ export default async ({ }; const setName = async () => { name = (await text({ - message: "What's the project name?", + message: "What's the target folder name?", initialValue: name || 'my-app', validate: (value: string) => { if (!value.length) { return 'Please input project name'; } - if (fsExtra.existsSync(join(cwd, value))) { + if (value != '.' && fsExtra.existsSync(join(cwd, value))) { return `Folder ${value} already exists`; } - if (!/^[a-zA-Z0-9_-]+$/.test(value)) { - return 'Name should only contain letters, numbers, underscores and dashes'; - } }, })) as string; }; From c39b4840af8000afd598f7b17fab4d7dadc971e5 Mon Sep 17 00:00:00 2001 From: Redish101 Date: Sun, 7 Jul 2024 09:03:55 +0800 Subject: [PATCH 3/3] =?UTF-8?q?docs:=20=E4=BF=AE=E6=94=B9=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E4=BB=A5=E9=80=82=E9=85=8D`create-umi`=E4=B8=AD?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=9A=84=E6=96=87=E4=BB=B6=E5=A4=B9=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E8=AE=BE=E7=BD=AE=E6=AD=A5=E9=AA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/docs/docs/guides/boilerplate.en-US.md | 2 +- docs/docs/docs/guides/boilerplate.md | 2 +- docs/docs/docs/guides/getting-started.en-US.md | 6 ------ docs/docs/docs/guides/getting-started.md | 5 ----- 4 files changed, 2 insertions(+), 13 deletions(-) diff --git a/docs/docs/docs/guides/boilerplate.en-US.md b/docs/docs/docs/guides/boilerplate.en-US.md index 5279c7a063ec..fa9be922a892 100644 --- a/docs/docs/docs/guides/boilerplate.en-US.md +++ b/docs/docs/docs/guides/boilerplate.en-US.md @@ -9,7 +9,7 @@ translated_at: '2024-03-17T10:35:15.206Z' Umi officially provides a scaffold, which allows you to easily and quickly create a project: ```bash -# Create a project in the current folder +# Input the path to the project directory when prompted by the wizard pnpm create umi # Create a project under the my-umi-app folder in the current directory pnpm create umi my-umi-app diff --git a/docs/docs/docs/guides/boilerplate.md b/docs/docs/docs/guides/boilerplate.md index 6076835fc1e9..47d12cc6f382 100644 --- a/docs/docs/docs/guides/boilerplate.md +++ b/docs/docs/docs/guides/boilerplate.md @@ -7,7 +7,7 @@ toc: content Umi 官方提供了一个脚手架 ,可以轻松快速创建一个项目: ```bash -# 在当前文件夹下创建项目 +# 在向导中输入文件夹名称 pnpm create umi # 在当前目录的 my-umi-app 文件夹下创建项目 pnpm create umi my-umi-app diff --git a/docs/docs/docs/guides/getting-started.en-US.md b/docs/docs/docs/guides/getting-started.en-US.md index aa103c6fc520..a27893471fd1 100644 --- a/docs/docs/docs/guides/getting-started.en-US.md +++ b/docs/docs/docs/guides/getting-started.en-US.md @@ -42,12 +42,6 @@ $ pnpm -v ## Create a Project -First, find a place to create a new empty directory. - -```bash -$ mkdir myapp && cd myapp -``` - Create a project using the official tool, PNPM diff --git a/docs/docs/docs/guides/getting-started.md b/docs/docs/docs/guides/getting-started.md index ec4fe00a8339..fb419077fb89 100644 --- a/docs/docs/docs/guides/getting-started.md +++ b/docs/docs/docs/guides/getting-started.md @@ -40,11 +40,6 @@ $ pnpm -v ## 创建项目 -先找个地方建个空目录。 - -```bash -$ mkdir myapp && cd myapp -``` 通过官方工具创建项目,