Skip to content

Commit 7bd4f34

Browse files
fz6mAndarist
andauthored
fix(pnpm): absolute cwd path matched workspace exclude rules (#121) (#122)
* fix(pnpm): absolute path matched exclude rules * chore(changeset): add changesets for fix * chore: remove console.log * Update .changeset/fair-days-rest.md Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com> Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
1 parent 8f9db7a commit 7bd4f34

File tree

8 files changed

+51
-4
lines changed

8 files changed

+51
-4
lines changed

.changeset/fair-days-rest.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@manypkg/cli": patch
3+
"@manypkg/get-packages": patch
4+
---
5+
6+
Fixed getting correct packages in pnpm workspaces with exclude rules.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"private": true,
3+
"name": "pnpm-exclude-workspace-case",
4+
"description": "pnpm exclude rule workspace work",
5+
"version": "1.0.0"
6+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"name": "pnpm-exclude-workspace-case-pkg-a",
3+
"version": "1.0.0",
4+
"dependencies": {
5+
"pnpm-exclude-workspace-case-pkg-b": "1.0.0"
6+
}
7+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
{
3+
"name": "pnpm-exclude-workspace-case-pkg-b",
4+
"version": "1.0.0"
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
{
3+
"name": "pnpm-exclude-workspace-case-excluded-pkg",
4+
"version": "1.0.0"
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
packages:
2+
- 'packages/**'
3+
# exclude packages that are inside myself name directories
4+
- '!**/pnpm-exclude-workspace-case/**'
5+

packages/get-packages/src/index.test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,19 @@ let runTests = (getPackages: GetPackages) => {
6969
expect(allPackages.tool).toEqual("pnpm");
7070
});
7171

72+
it("should resolve workspace for pnpm with exclude rules", async () => {
73+
const allPackages = await getPackages(f.copy("pnpm-exclude-workspace-case"));
74+
75+
expect(allPackages.packages[0].packageJson.name).toEqual(
76+
"pnpm-exclude-workspace-case-pkg-a"
77+
);
78+
expect(allPackages.packages[1].packageJson.name).toEqual(
79+
"pnpm-exclude-workspace-case-pkg-b"
80+
);
81+
expect(allPackages.packages.length).toEqual(2);
82+
expect(allPackages.tool).toEqual("pnpm");
83+
})
84+
7285
it("should resolve workspaces for lerna", async () => {
7386
const allPackages = await getPackages(f.copy("lerna-workspace-base"));
7487

packages/get-packages/src/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,13 @@ export async function getPackages(dir: string): Promise<Packages> {
110110
};
111111
}
112112

113-
const directories = await globby(tool.packageGlobs, {
113+
const relativeDirectories = await globby(tool.packageGlobs, {
114114
cwd,
115115
onlyDirectories: true,
116-
absolute: true,
117116
expandDirectories: false,
118117
ignore: ["**/node_modules"]
119118
});
119+
const directories = relativeDirectories.map(p => path.resolve(cwd, p))
120120

121121
let pkgJsonsMissingNameField: Array<string> = [];
122122

@@ -234,13 +234,13 @@ export function getPackagesSync(dir: string): Packages {
234234
packages: [root]
235235
};
236236
}
237-
const directories = globbySync(tool.packageGlobs, {
237+
const relativeDirectories = globbySync(tool.packageGlobs, {
238238
cwd,
239239
onlyDirectories: true,
240-
absolute: true,
241240
expandDirectories: false,
242241
ignore: ["**/node_modules"]
243242
});
243+
const directories = relativeDirectories.map(p => path.resolve(cwd, p))
244244

245245
let pkgJsonsMissingNameField: Array<string> = [];
246246

0 commit comments

Comments
 (0)