From 56a64c5d29565195d0f5013425ee1e2e5fdbe754 Mon Sep 17 00:00:00 2001 From: Alex / KATT Date: Mon, 15 Jan 2024 00:33:56 +0100 Subject: [PATCH] fix: allow tags in `npm:x`-deps (#194) --- .changeset/chatty-pillows-enjoy.md | 5 +++++ packages/cli/src/checks/INTERNAL_MISMATCH.ts | 2 ++ .../src/checks/__tests__/INTERNAL_MISMATCH.ts | 16 ++++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 .changeset/chatty-pillows-enjoy.md diff --git a/.changeset/chatty-pillows-enjoy.md b/.changeset/chatty-pillows-enjoy.md new file mode 100644 index 0000000..2a8a63c --- /dev/null +++ b/.changeset/chatty-pillows-enjoy.md @@ -0,0 +1,5 @@ +--- +"@manypkg/cli": patch +--- + +fix: allow tags in `npm:x`-deps diff --git a/packages/cli/src/checks/INTERNAL_MISMATCH.ts b/packages/cli/src/checks/INTERNAL_MISMATCH.ts index d48d731..fc1a74e 100644 --- a/packages/cli/src/checks/INTERNAL_MISMATCH.ts +++ b/packages/cli/src/checks/INTERNAL_MISMATCH.ts @@ -22,8 +22,10 @@ export default makeCheck({ for (let depName in deps) { let range = deps[depName]; let dependencyWorkspace = allWorkspaces.get(depName); + if ( dependencyWorkspace !== undefined && + !range.startsWith("npm:") && !semver.satisfies(dependencyWorkspace.packageJson.version, range) ) { errors.push({ diff --git a/packages/cli/src/checks/__tests__/INTERNAL_MISMATCH.ts b/packages/cli/src/checks/__tests__/INTERNAL_MISMATCH.ts index 0b5aac7..51368a0 100644 --- a/packages/cli/src/checks/__tests__/INTERNAL_MISMATCH.ts +++ b/packages/cli/src/checks/__tests__/INTERNAL_MISMATCH.ts @@ -85,4 +85,20 @@ describe("internal mismatch", () => { ] `); }); + + // regression test for https://github.com/Thinkmill/manypkg/issues/193 + it.each(["npm:pkg-1@sometag", "npm:@someorg/pkg-1@sometag"])( + "should not error when using tag %s", + (range) => { + let ws = getWS(); + let dependsOnOne = getFakeWS("depends-on-one"); + dependsOnOne.packageJson.dependencies = { + "pkg-1": range, + }; + ws.set("depends-on-one", dependsOnOne); + let errors = makeCheck.validate(dependsOnOne, ws, rootWorkspace, {}); + expect(errors.length).toEqual(0); + } + ); + });