From 513e08700b0c10ac47188003e2a426981d8a8293 Mon Sep 17 00:00:00 2001 From: ianho Date: Wed, 10 Jan 2024 14:31:46 +0800 Subject: [PATCH] fix: copyTemplate failed if tmpdir set to false --- src/platform.ts | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/platform.ts b/src/platform.ts index 34810889..77a9bfc9 100644 --- a/src/platform.ts +++ b/src/platform.ts @@ -153,10 +153,27 @@ export class App { async copyTemplate() { await promisifyHooks(this.opts.beforeCopy, this.hookArgsWithOriginalResourcesAppDir); - await fs.copy(this.opts.dir, this.originalResourcesAppDir, { - filter: userPathFilter(this.opts), - dereference: this.opts.derefSymlinks, - }); + if (this.opts.tmpdir === false) { + const filter = userPathFilter(this.opts); + const items = await fs.readdir(this.opts.dir); + await Promise.all(items.map(async item => { + const srcItem = path.join(this.opts.dir, item); + const destItem = path.join(this.originalResourcesAppDir, item); + + const include = await filter(srcItem, destItem); + if (!include) return; + + return fs.copy(srcItem, destItem, { + filter, + dereference: this.opts.derefSymlinks ?? true, + }); + })); + } else { + await fs.copy(this.opts.dir, this.originalResourcesAppDir, { + filter: userPathFilter(this.opts), + dereference: this.opts.derefSymlinks ?? true, + }); + } await promisifyHooks(this.opts.afterCopy, this.hookArgsWithOriginalResourcesAppDir); if (this.opts.prune) { await promisifyHooks(this.opts.afterPrune, this.hookArgsWithOriginalResourcesAppDir);