From 2a0a6423105f4be2e68c992bf8cad2820a257e51 Mon Sep 17 00:00:00 2001 From: leey0818 Date: Thu, 5 Sep 2024 15:24:52 +0900 Subject: [PATCH 1/3] fix: correct native dependency tree mismatch in app-builder rebuild --- packages/app-builder-lib/src/packager.ts | 8 ++++---- packages/app-builder-lib/src/util/appFileCopier.ts | 3 +-- packages/app-builder-lib/src/util/packageDependencies.ts | 7 ++++--- packages/electron-builder/src/cli/install-app-deps.ts | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/app-builder-lib/src/packager.ts b/packages/app-builder-lib/src/packager.ts index c26fe3b5b9f..b2722562179 100644 --- a/packages/app-builder-lib/src/packager.ts +++ b/packages/app-builder-lib/src/packager.ts @@ -132,8 +132,8 @@ export class Packager { private nodeDependencyInfo = new Map>>() - getNodeDependencyInfo(platform: Platform | null): Lazy> { - let key = "" + getNodeDependencyInfo(platform: Platform | null, flatten: T): Lazy> { + let key = "" + flatten.toString() let excludedDependencies: Array | null = null if (platform != null && this.framework.getExcludedDependencies != null) { excludedDependencies = this.framework.getExcludedDependencies(platform) @@ -144,7 +144,7 @@ export class Packager { let result = this.nodeDependencyInfo.get(key) if (result == null) { - result = createLazyProductionDeps(this.appDir, excludedDependencies) + result = createLazyProductionDeps(this.appDir, excludedDependencies, flatten) this.nodeDependencyInfo.set(key, result) } return result @@ -542,7 +542,7 @@ export class Packager { frameworkInfo, platform: platform.nodeName, arch: Arch[arch], - productionDeps: this.getNodeDependencyInfo(null) as Lazy>, + productionDeps: this.getNodeDependencyInfo(null, false), }) } } diff --git a/packages/app-builder-lib/src/util/appFileCopier.ts b/packages/app-builder-lib/src/util/appFileCopier.ts index 3c585870c07..da5020d8df1 100644 --- a/packages/app-builder-lib/src/util/appFileCopier.ts +++ b/packages/app-builder-lib/src/util/appFileCopier.ts @@ -12,7 +12,6 @@ import { Packager } from "../packager" import { PlatformPackager } from "../platformPackager" import { AppFileWalker } from "./AppFileWalker" import { NodeModuleCopyHelper } from "./NodeModuleCopyHelper" -import { NodeModuleInfo } from "./packageDependencies" const BOWER_COMPONENTS_PATTERN = `${path.sep}bower_components${path.sep}` /** @internal */ @@ -181,7 +180,7 @@ function validateFileSet(fileSet: ResolvedFileSet): ResolvedFileSet { /** @internal */ export async function computeNodeModuleFileSets(platformPackager: PlatformPackager, mainMatcher: FileMatcher): Promise> { - const deps = (await platformPackager.info.getNodeDependencyInfo(platformPackager.platform).value) as Array + const deps = await platformPackager.info.getNodeDependencyInfo(platformPackager.platform, true).value const nodeModuleExcludedExts = getNodeModuleExcludedExts(platformPackager) // serial execution because copyNodeModules is concurrent and so, no need to increase queue/pressure diff --git a/packages/app-builder-lib/src/util/packageDependencies.ts b/packages/app-builder-lib/src/util/packageDependencies.ts index d7e00a2aaf9..907c452ec59 100644 --- a/packages/app-builder-lib/src/util/packageDependencies.ts +++ b/packages/app-builder-lib/src/util/packageDependencies.ts @@ -1,15 +1,16 @@ import { Lazy } from "lazy-val" import { executeAppBuilderAsJson } from "./appBuilder" -export function createLazyProductionDeps(projectDir: string, excludedDependencies: Array | null) { +export function createLazyProductionDeps(projectDir: string, excludedDependencies: Array | null, flatten: T) { return new Lazy(async () => { - const args = ["node-dep-tree", "--flatten", "--dir", projectDir] + const args = ["node-dep-tree", "--dir", projectDir] + if (flatten) args.push("--flatten") if (excludedDependencies != null) { for (const name of excludedDependencies) { args.push("--exclude-dep", name) } } - return executeAppBuilderAsJson>(args) + return executeAppBuilderAsJson>(args) }) } diff --git a/packages/electron-builder/src/cli/install-app-deps.ts b/packages/electron-builder/src/cli/install-app-deps.ts index 33d5ee4da7a..c27e2160d5a 100644 --- a/packages/electron-builder/src/cli/install-app-deps.ts +++ b/packages/electron-builder/src/cli/install-app-deps.ts @@ -62,7 +62,7 @@ export async function installAppDeps(args: any) { frameworkInfo: { version, useCustomDist: true }, platform: args.platform, arch: args.arch, - productionDeps: createLazyProductionDeps(appDir, null), + productionDeps: createLazyProductionDeps(appDir, null, false), }, appDir !== projectDir ) From 6282131c0baebe69b866d773441401e7870acf95 Mon Sep 17 00:00:00 2001 From: leey0818 Date: Thu, 5 Sep 2024 17:08:29 +0900 Subject: [PATCH 2/3] fix: set as optional parameter --- packages/app-builder-lib/src/packager.ts | 4 ++-- packages/app-builder-lib/src/util/appFileCopier.ts | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/app-builder-lib/src/packager.ts b/packages/app-builder-lib/src/packager.ts index b2722562179..f7db65dd9cb 100644 --- a/packages/app-builder-lib/src/packager.ts +++ b/packages/app-builder-lib/src/packager.ts @@ -132,7 +132,7 @@ export class Packager { private nodeDependencyInfo = new Map>>() - getNodeDependencyInfo(platform: Platform | null, flatten: T): Lazy> { + getNodeDependencyInfo(platform: Platform | null, flatten: boolean = true): Lazy> { let key = "" + flatten.toString() let excludedDependencies: Array | null = null if (platform != null && this.framework.getExcludedDependencies != null) { @@ -542,7 +542,7 @@ export class Packager { frameworkInfo, platform: platform.nodeName, arch: Arch[arch], - productionDeps: this.getNodeDependencyInfo(null, false), + productionDeps: this.getNodeDependencyInfo(null, false) as Lazy>, }) } } diff --git a/packages/app-builder-lib/src/util/appFileCopier.ts b/packages/app-builder-lib/src/util/appFileCopier.ts index da5020d8df1..3c585870c07 100644 --- a/packages/app-builder-lib/src/util/appFileCopier.ts +++ b/packages/app-builder-lib/src/util/appFileCopier.ts @@ -12,6 +12,7 @@ import { Packager } from "../packager" import { PlatformPackager } from "../platformPackager" import { AppFileWalker } from "./AppFileWalker" import { NodeModuleCopyHelper } from "./NodeModuleCopyHelper" +import { NodeModuleInfo } from "./packageDependencies" const BOWER_COMPONENTS_PATTERN = `${path.sep}bower_components${path.sep}` /** @internal */ @@ -180,7 +181,7 @@ function validateFileSet(fileSet: ResolvedFileSet): ResolvedFileSet { /** @internal */ export async function computeNodeModuleFileSets(platformPackager: PlatformPackager, mainMatcher: FileMatcher): Promise> { - const deps = await platformPackager.info.getNodeDependencyInfo(platformPackager.platform, true).value + const deps = (await platformPackager.info.getNodeDependencyInfo(platformPackager.platform).value) as Array const nodeModuleExcludedExts = getNodeModuleExcludedExts(platformPackager) // serial execution because copyNodeModules is concurrent and so, no need to increase queue/pressure From 831a81efcbebebaa83f1a9c13bb8d99f9910b544 Mon Sep 17 00:00:00 2001 From: Mike Maietta Date: Thu, 5 Sep 2024 09:03:44 -0700 Subject: [PATCH 3/3] Create chatty-rice-hunt.md --- .changeset/chatty-rice-hunt.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/chatty-rice-hunt.md diff --git a/.changeset/chatty-rice-hunt.md b/.changeset/chatty-rice-hunt.md new file mode 100644 index 00000000000..58969cbde6c --- /dev/null +++ b/.changeset/chatty-rice-hunt.md @@ -0,0 +1,6 @@ +--- +"app-builder-lib": patch +"electron-builder": patch +--- + +fix: correct native dependency tree mismatch in app-builder rebuild