Skip to content

Commit 542e644

Browse files
committed
feat: path exists cancel generator
1 parent 26d4d70 commit 542e644

3 files changed

Lines changed: 51 additions & 4 deletions

File tree

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
"commander": "^3.0.1",
3737
"consolidate": "^0.15.1",
3838
"degit": "^2.1.4",
39+
"fs-extra": "^9.0.0",
3940
"handlebars": "^4.4.3",
4041
"inquirer": "^7.0.0",
4142
"metalsmith": "^2.3.0",
@@ -45,6 +46,7 @@
4546
},
4647
"devDependencies": {
4748
"@types/async": "^3.0.2",
49+
"@types/fs-extra": "^8.1.0",
4850
"@types/inquirer": "^6.5.0",
4951
"@types/jest": "^24.0.23",
5052
"@types/node": "^12.7.12",

src/create/render.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import consolidate from 'consolidate';
44
import async from 'async';
55
import path from 'path';
66
import { Arguments } from 'yargs';
7+
import fs from 'fs-extra';
78

89
import { checkRepoVersion } from './check-version';
910
import user from './git-user';
@@ -27,16 +28,24 @@ export default async (renderObj: GeneratorValues, macros: MacrosType) => {
2728
description,
2829
projectDirectory
2930
} = renderObj
31+
// const isExt fs.ensureDirSync(destPath)
32+
let newProjectDirectory = projectDirectory
33+
let newDestPath = destPath
34+
const isExists = fs.pathExistsSync(destPath)
35+
if (isExists) {
36+
console.log(chalk.red('此项目已存在,请变更名字后重试'))
37+
return
38+
}
3039
Metalsmith(process.cwd())
3140
.metadata({
32-
name: projectDirectory,
41+
name: newProjectDirectory,
3342
description: description,
3443
})
3544
.source(templatePath)
36-
.destination(destPath)
45+
.destination(newDestPath)
3746
.clean(false)
3847
.use(askQuestions({
39-
name: { default: projectDirectory, type: 'string' },
48+
name: { default: newProjectDirectory, type: 'string' },
4049
author: { default: user(), type: 'string' },
4150
description: { default: description, type: 'string' },
4251
platform: {

yarn.lock

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,13 @@
324324
dependencies:
325325
"@babel/types" "^7.3.0"
326326

327+
"@types/fs-extra@^8.1.0":
328+
version "8.1.0"
329+
resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.0.tgz#1114834b53c3914806cd03b3304b37b3bd221a4d"
330+
integrity sha512-UoOfVEzAUpeSPmjm7h1uk5MH6KZma2z2O7a75onTGjnNvAvMVrPzPL/vBbT65iIGHWj6rokwfmYcmxmlSf2uwg==
331+
dependencies:
332+
"@types/node" "*"
333+
327334
"@types/inquirer@^6.5.0":
328335
version "6.5.0"
329336
resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-6.5.0.tgz#b83b0bf30b88b8be7246d40e51d32fe9d10e09be"
@@ -577,6 +584,11 @@ asynckit@^0.4.0:
577584
resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
578585
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
579586

587+
at-least-node@^1.0.0:
588+
version "1.0.0"
589+
resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
590+
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
591+
580592
atob@^2.1.1:
581593
version "2.1.2"
582594
resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
@@ -1433,6 +1445,16 @@ fragment-cache@^0.2.1:
14331445
dependencies:
14341446
map-cache "^0.2.2"
14351447

1448+
fs-extra@^9.0.0:
1449+
version "9.0.0"
1450+
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3"
1451+
integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==
1452+
dependencies:
1453+
at-least-node "^1.0.0"
1454+
graceful-fs "^4.2.0"
1455+
jsonfile "^6.0.1"
1456+
universalify "^1.0.0"
1457+
14361458
fs-extra@~0.26.5:
14371459
version "0.26.7"
14381460
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9"
@@ -1543,7 +1565,7 @@ globals@^11.1.0:
15431565
resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
15441566
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
15451567

1546-
graceful-fs@^4.1.11, graceful-fs@^4.1.15:
1568+
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.2.0:
15471569
version "4.2.3"
15481570
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
15491571
integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==
@@ -2471,6 +2493,15 @@ jsonfile@^2.1.0:
24712493
optionalDependencies:
24722494
graceful-fs "^4.1.6"
24732495

2496+
jsonfile@^6.0.1:
2497+
version "6.0.1"
2498+
resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179"
2499+
integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==
2500+
dependencies:
2501+
universalify "^1.0.0"
2502+
optionalDependencies:
2503+
graceful-fs "^4.1.6"
2504+
24742505
jsprim@^1.2.2:
24752506
version "1.4.1"
24762507
resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -3995,6 +4026,11 @@ union-value@^1.0.0:
39954026
is-extendable "^0.1.1"
39964027
set-value "^2.0.1"
39974028

4029+
universalify@^1.0.0:
4030+
version "1.0.0"
4031+
resolved "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
4032+
integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==
4033+
39984034
unset-value@^1.0.0:
39994035
version "1.0.0"
40004036
resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"

0 commit comments

Comments
 (0)