Skip to content

Commit

Permalink
Adapt to lerna 7 defaults
Browse files Browse the repository at this point in the history
  • Loading branch information
joshuajaco committed Nov 18, 2023
1 parent 03019c7 commit d19410d
Show file tree
Hide file tree
Showing 13 changed files with 117 additions and 100 deletions.
1 change: 0 additions & 1 deletion fixtures/lerna-with-defaults/lerna.json

This file was deleted.

4 changes: 0 additions & 4 deletions fixtures/lerna-with-defaults/package.json

This file was deleted.

4 changes: 0 additions & 4 deletions fixtures/lerna-with-defaults/packages/a/package.json

This file was deleted.

4 changes: 0 additions & 4 deletions fixtures/lerna-with-defaults/packages/b/package.json

This file was deleted.

1 change: 1 addition & 0 deletions fixtures/lerna-with-packages/lerna.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "packages": ["packages/*"] }
4 changes: 4 additions & 0 deletions fixtures/lerna-with-packages/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"name": "lerna",
"private": true
}
4 changes: 4 additions & 0 deletions fixtures/lerna-with-packages/packages/a/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"name": "@lerna-with-packages/a",
"private": true
}
4 changes: 4 additions & 0 deletions fixtures/lerna-with-packages/packages/b/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"name": "@lerna-with-packages/b",
"private": true
}
2 changes: 1 addition & 1 deletion fixtures/lerna/lerna.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{ "packages": ["packages/*"] }
{}
5 changes: 4 additions & 1 deletion fixtures/lerna/package.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"name": "lerna",
"private": true
"private": true,
"workspaces": [
"packages/*"
]
}
9 changes: 3 additions & 6 deletions index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,14 +111,11 @@ function resolveLernaGlobs(dir: string): string[] | null {
const lernaJson = resolveJSONFile(dir, "lerna.json");
if (lernaJson === undefined) return null;

if (isObject(lernaJson)) {
if (lernaJson.useWorkspaces === true) return null;
if (!lernaJson.packages) return ["packages/*"];
if (isStringArray(lernaJson.packages)) return lernaJson.packages;
return null;
if (isObject(lernaJson) && isStringArray(lernaJson.packages)) {
return lernaJson.packages;
}

return ["packages/*"];
return null;
}

function resolvePnpmGlobs(dir: string): string[] | null {
Expand Down
22 changes: 11 additions & 11 deletions tests/findRoot.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,23 @@ assert.deepStrictEqual(findWorkspacesRoot(join("fixtures", "bolt")), {
globs: ["packages/**/*"],
});

assert.deepStrictEqual(findWorkspacesRoot(join("fixtures", "lerna")), {
location: posixResolve("fixtures", "lerna"),
globs: ["packages/*"],
});
assert.deepStrictEqual(
findWorkspacesRoot(join("fixtures", "lerna-with-packages")),
{
location: posixResolve("fixtures", "lerna-with-packages"),
globs: ["packages/*"],
},
);

assert.strictEqual(
findWorkspacesRoot(join("fixtures", "lerna-with-invalid-packages")),
null,
);

assert.deepStrictEqual(
findWorkspacesRoot(join("fixtures", "lerna-with-defaults")),
{
location: posixResolve("fixtures", "lerna-with-defaults"),
globs: ["packages/*"],
},
);
assert.deepStrictEqual(findWorkspacesRoot(join("fixtures", "lerna")), {
location: posixResolve("fixtures", "lerna"),
globs: ["packages/*"],
});

assert.strictEqual(
findWorkspacesRoot(join("fixtures", "lerna-with-invalid-workspaces")),
Expand Down
153 changes: 85 additions & 68 deletions tests/findWorkspaces.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,54 +16,54 @@ assert.deepStrictEqual(findWorkspaces(join("fixtures", "bolt")), [
},
]);

assert.deepStrictEqual(findWorkspaces(join("fixtures", "lerna")), [
{
location: posixResolve("fixtures", "lerna", "packages", "a"),
package: { name: "@lerna/a", private: true },
},
{
location: posixResolve("fixtures", "lerna", "packages", "b"),
package: { name: "@lerna/b", private: true },
},
]);

assert.strictEqual(
findWorkspaces(join("fixtures", "lerna-with-invalid-packages")),
null,
);

assert.deepStrictEqual(
findWorkspaces(join("fixtures", "lerna-with-defaults")),
findWorkspaces(join("fixtures", "lerna-with-packages")),
[
{
location: posixResolve(
"fixtures",
"lerna-with-defaults",
"lerna-with-packages",
"packages",
"a",
),
package: { name: "@lerna-with-defaults/a", private: true },
package: { name: "@lerna-with-packages/a", private: true },
},
{
location: posixResolve(
"fixtures",
"lerna-with-defaults",
"lerna-with-packages",
"packages",
"b",
),
package: { name: "@lerna-with-defaults/b", private: true },
package: { name: "@lerna-with-packages/b", private: true },
},
],
);

assert.strictEqual(
findWorkspaces(join("fixtures", "lerna-with-invalid-packages")),
null,
);

assert.deepStrictEqual(findWorkspaces(join("fixtures", "lerna")), [
{
location: posixResolve("fixtures", "lerna", "packages", "a"),
package: { name: "@lerna/a", private: true },
},
{
location: posixResolve("fixtures", "lerna", "packages", "b"),
package: { name: "@lerna/b", private: true },
},
]);

assert.strictEqual(
findWorkspaces(join("fixtures", "lerna-with-invalid-workspaces")),
null,
);

assert.deepStrictEqual(
findWorkspaces(join("fixtures", "lerna-with-invalid-lerna-json")),
[],
null,
);

assert.strictEqual(
Expand Down Expand Up @@ -186,53 +186,67 @@ assert.deepStrictEqual(findWorkspaces(posixResolve("fixtures", "yarn-npm")), [
const cache = createWorkspacesCache();

assert.deepStrictEqual(
findWorkspaces(posixResolve("fixtures", "lerna", "foo"), { cache }),
[
{
location: posixResolve("fixtures", "lerna", "packages", "a"),
package: { name: "@lerna/a", private: true },
},
{
location: posixResolve("fixtures", "lerna", "packages", "b"),
package: { name: "@lerna/b", private: true },
},
],
);

assert.deepStrictEqual(
findWorkspaces(posixResolve("fixtures", "lerna", "bar"), { cache }),
findWorkspaces(posixResolve("fixtures", "lerna-with-packages", "foo"), {
cache,
}),
[
{
location: posixResolve("fixtures", "lerna", "packages", "a"),
package: { name: "@lerna/a", private: true },
location: posixResolve(
"fixtures",
"lerna-with-packages",
"packages",
"a",
),
package: { name: "@lerna-with-packages/a", private: true },
},
{
location: posixResolve("fixtures", "lerna", "packages", "b"),
package: { name: "@lerna/b", private: true },
location: posixResolve(
"fixtures",
"lerna-with-packages",
"packages",
"b",
),
package: { name: "@lerna-with-packages/b", private: true },
},
],
);

assert.deepStrictEqual(
findWorkspaces(posixResolve("fixtures", "lerna-with-defaults"), { cache }),
findWorkspaces(posixResolve("fixtures", "lerna-with-packages", "bar"), {
cache,
}),
[
{
location: posixResolve(
"fixtures",
"lerna-with-defaults",
"lerna-with-packages",
"packages",
"a",
),
package: { name: "@lerna-with-defaults/a", private: true },
package: { name: "@lerna-with-packages/a", private: true },
},
{
location: posixResolve(
"fixtures",
"lerna-with-defaults",
"lerna-with-packages",
"packages",
"b",
),
package: { name: "@lerna-with-defaults/b", private: true },
package: { name: "@lerna-with-packages/b", private: true },
},
],
);

assert.deepStrictEqual(
findWorkspaces(posixResolve("fixtures", "lerna"), { cache }),
[
{
location: posixResolve("fixtures", "lerna", "packages", "a"),
package: { name: "@lerna/a", private: true },
},
{
location: posixResolve("fixtures", "lerna", "packages", "b"),
package: { name: "@lerna/b", private: true },
},
],
);
Expand All @@ -241,14 +255,17 @@ assert.deepStrictEqual(
cache.root,
new Map([
[
resolve("fixtures", "lerna"),
{ globs: ["packages/*"], location: posixResolve("fixtures", "lerna") },
resolve("fixtures", "lerna-with-packages"),
{
globs: ["packages/*"],
location: posixResolve("fixtures", "lerna-with-packages"),
},
],
[
resolve("fixtures", "lerna-with-defaults"),
resolve("fixtures", "lerna"),
{
globs: ["packages/*"],
location: posixResolve("fixtures", "lerna-with-defaults"),
location: posixResolve("fixtures", "lerna"),
},
],
]),
Expand All @@ -258,38 +275,38 @@ assert.deepStrictEqual(
cache.workspaces,
new Map([
[
posixResolve("fixtures", "lerna"),
[
{
location: posixResolve("fixtures", "lerna", "packages", "a"),
package: { name: "@lerna/a", private: true },
},
{
location: posixResolve("fixtures", "lerna", "packages", "b"),
package: { name: "@lerna/b", private: true },
},
],
],
[
posixResolve("fixtures", "lerna-with-defaults"),
posixResolve("fixtures", "lerna-with-packages"),
[
{
location: posixResolve(
"fixtures",
"lerna-with-defaults",
"lerna-with-packages",
"packages",
"a",
),
package: { name: "@lerna-with-defaults/a", private: true },
package: { name: "@lerna-with-packages/a", private: true },
},
{
location: posixResolve(
"fixtures",
"lerna-with-defaults",
"lerna-with-packages",
"packages",
"b",
),
package: { name: "@lerna-with-defaults/b", private: true },
package: { name: "@lerna-with-packages/b", private: true },
},
],
],
[
posixResolve("fixtures", "lerna"),
[
{
location: posixResolve("fixtures", "lerna", "packages", "a"),
package: { name: "@lerna/a", private: true },
},
{
location: posixResolve("fixtures", "lerna", "packages", "b"),
package: { name: "@lerna/b", private: true },
},
],
],
Expand Down

0 comments on commit d19410d

Please sign in to comment.