Skip to content

Commit 81e0c47

Browse files
authored
fix: optimize workspace package resolution in dependency tree (#8958)
1 parent 7ba4fea commit 81e0c47

File tree

6 files changed

+141
-1
lines changed

6 files changed

+141
-1
lines changed

.changeset/dirty-laws-bake.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"app-builder-lib": patch
3+
---
4+
5+
optimize workspace package resolution in dependency tree

packages/app-builder-lib/src/node-module-collector/nodeModulesCollector.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,12 +147,15 @@ export abstract class NodeModulesCollector<T extends Dependency<T, OptionalsType
147147

148148
private getTreeFromWorkspaces(tree: T): T {
149149
if (tree.workspaces && tree.dependencies) {
150+
const packageJson: Dependency<string, string> = require(path.join(this.rootDir, "package.json"))
151+
const dependencyName = packageJson.name
150152
for (const [key, value] of Object.entries(tree.dependencies)) {
151-
if (this.rootDir.endsWith(path.normalize(key))) {
153+
if (key === dependencyName) {
152154
return value
153155
}
154156
}
155157
}
158+
156159
return tree
157160
}
158161

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2+
# yarn lockfile v1
3+
4+
5+
electron-log@2.2.9:
6+
version "2.2.9"
7+
resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-2.2.9.tgz#e0484cb1a8a84593095e3b69f47361ae15d73bdf"
8+
9+
is-number@^6.0.0:
10+
version "6.0.0"
11+
resolved "https://registry.yarnpkg.com/is-number/-/is-number-6.0.0.tgz#e6d15ad31fc262887cccf217ae5f9316f81b1995"
12+
integrity sha512-Wu1VHeILBK8KAWJUAiSZQX94GmOE45Rg6/538fKwiloUu21KncEkYGPqob2oSZ5mUT73vLGrHQjKw3KMPwfDzg==
13+
14+
is-odd@3.0.1:
15+
version "3.0.1"
16+
resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-3.0.1.tgz#65101baf3727d728b66fa62f50cda7f2d3989601"
17+
integrity sha512-CQpnWPrDwmP1+SMHXZhtLtJv90yiyVfluGsX5iNCVkrhQtU3TQHsUWPG9wkdk9Lgd5yNpAg9jQEo90CBaXgWMA==
18+
dependencies:
19+
is-number "^6.0.0"
20+
21+
ms@2.0.0:
22+
version "2.0.0"
23+
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2+
# yarn lockfile v1
3+
4+
5+
electron-log@2.2.9:
6+
version "2.2.9"
7+
resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-2.2.9.tgz#e0484cb1a8a84593095e3b69f47361ae15d73bdf"
8+
9+
is-number@^6.0.0:
10+
version "6.0.0"
11+
resolved "https://registry.yarnpkg.com/is-number/-/is-number-6.0.0.tgz#e6d15ad31fc262887cccf217ae5f9316f81b1995"
12+
integrity sha512-Wu1VHeILBK8KAWJUAiSZQX94GmOE45Rg6/538fKwiloUu21KncEkYGPqob2oSZ5mUT73vLGrHQjKw3KMPwfDzg==
13+
14+
is-odd@^3.0.1:
15+
version "3.0.1"
16+
resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-3.0.1.tgz#65101baf3727d728b66fa62f50cda7f2d3989601"
17+
integrity sha512-CQpnWPrDwmP1+SMHXZhtLtJv90yiyVfluGsX5iNCVkrhQtU3TQHsUWPG9wkdk9Lgd5yNpAg9jQEo90CBaXgWMA==
18+
dependencies:
19+
is-number "^6.0.0"
20+
21+
ms@2.0.0:
22+
version "2.0.0"
23+
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"

test/snapshots/HoistedNodeModuleTest.js.snap

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64675,6 +64675,67 @@ exports[`isInstallDepsBefore=true > yarn some module add by manual instead of in
6467564675
}
6467664676
`;
6467764677

64678+
exports[`isInstallDepsBefore=true > yarn workspace for scope name 1`] = `
64679+
{
64680+
"linux": [],
64681+
}
64682+
`;
64683+
64684+
exports[`isInstallDepsBefore=true > yarn workspace for scope name 2`] = `
64685+
{
64686+
"files": {
64687+
"index.html": {
64688+
"offset": "5150",
64689+
"size": 841,
64690+
},
64691+
"index.js": {
64692+
"offset": "5991",
64693+
"size": 2501,
64694+
},
64695+
"node_modules": {
64696+
"files": {
64697+
"is-number": {
64698+
"files": {
64699+
"LICENSE": {
64700+
"offset": "0",
64701+
"size": 1088,
64702+
},
64703+
"index.js": {
64704+
"offset": "1088",
64705+
"size": 662,
64706+
},
64707+
"package.json": {
64708+
"offset": "1750",
64709+
"size": 871,
64710+
},
64711+
},
64712+
},
64713+
"is-odd": {
64714+
"files": {
64715+
"LICENSE": {
64716+
"offset": "2621",
64717+
"size": 1091,
64718+
},
64719+
"index.js": {
64720+
"offset": "3712",
64721+
"size": 543,
64722+
},
64723+
"package.json": {
64724+
"offset": "4255",
64725+
"size": 895,
64726+
},
64727+
},
64728+
},
64729+
},
64730+
},
64731+
"package.json": {
64732+
"offset": "8492",
64733+
"size": 291,
64734+
},
64735+
},
64736+
}
64737+
`;
64738+
6467864739
exports[`yarn several workspaces 1`] = `
6467964740
{
6468064741
"linux": [],

test/src/HoistedNodeModuleTest.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ test("yarn workspace", ({ expect }) =>
1616
}
1717
))
1818

19+
1920
test("conflict versions", ({ expect }) =>
2021
assertPack(
2122
expect,
@@ -71,6 +72,30 @@ test("yarn two package.json w/ native module", ({ expect }) =>
7172
))
7273

7374
describe("isInstallDepsBefore=true", { sequential: true }, () => {
75+
76+
test("yarn workspace for scope name", ({ expect }) =>
77+
assertPack(
78+
expect,
79+
"test-app-yarn-several-workspace",
80+
{
81+
targets: linuxDirTarget,
82+
projectDir: "packages/test-app",
83+
},
84+
{
85+
isInstallDepsBefore: true,
86+
projectDirCreated: projectDir => {
87+
let subAppDir = path.join(projectDir , "packages","test-app")
88+
return modifyPackageJson(subAppDir, data => {
89+
data.name = "@scope/xxx-app"
90+
data.dependencies = {
91+
"is-odd": "3.0.1"
92+
}
93+
})
94+
},
95+
packed: context => verifyAsarFileTree(expect, context.getResources(Platform.LINUX)),
96+
}
97+
))
98+
7499
// https://github.com/electron-userland/electron-builder/issues/8493
75100
test("pnpm es5-ext without hoisted config", ({ expect }) =>
76101
assertPack(

0 commit comments

Comments
 (0)