From f4b9d8586215fc07c28998e5d896fefa876139b7 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Wed, 17 Jul 2024 09:13:22 -0400 Subject: fix(workspace): support resolving bare specifiers to npm pkgs within a workspace (#24611) This makes bare specifiers for npm packages work when inside a workspace, which emulates the same behaviour as when there's a node_modules directory. The bare specifier can be overwritten by specifying an import map entry or package.json dependency entry. * https://github.com/denoland/deno_config/pull/88 Closes #24605 --- tests/specs/npm/workspace_basic/__test__.jsonc | 4 ++++ tests/specs/npm/workspace_basic/b/main.ts | 2 -- tests/specs/npm/workspace_basic/b/main_byonm.out | 1 - tests/specs/npm/workspace_basic/b/main_global_cache.out | 1 - tests/specs/npm/workspace_basic/b/main_node_modules_dir.out | 1 - tests/specs/npm/workspace_basic/main.out | 4 ++++ tests/specs/npm/workspace_basic/main.ts | 6 ++++++ 7 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 tests/specs/npm/workspace_basic/main.out create mode 100644 tests/specs/npm/workspace_basic/main.ts (limited to 'tests/specs/npm/workspace_basic') diff --git a/tests/specs/npm/workspace_basic/__test__.jsonc b/tests/specs/npm/workspace_basic/__test__.jsonc index 79e059ca1..7415a9aeb 100644 --- a/tests/specs/npm/workspace_basic/__test__.jsonc +++ b/tests/specs/npm/workspace_basic/__test__.jsonc @@ -5,6 +5,10 @@ "args": "run --node-modules-dir=false b/main.ts", "output": "b/main_global_cache.out" }, + "global_cache_bare_specifier_not_in_pkg": { + "args": "run --node-modules-dir=false main.ts", + "output": "main.out" + }, "node_modules_dir": { "args": "run --node-modules-dir=true b/main.ts", "output": "b/main_node_modules_dir.out" diff --git a/tests/specs/npm/workspace_basic/b/main.ts b/tests/specs/npm/workspace_basic/b/main.ts index 03956388c..4920b8d6f 100644 --- a/tests/specs/npm/workspace_basic/b/main.ts +++ b/tests/specs/npm/workspace_basic/b/main.ts @@ -1,9 +1,7 @@ import * as a1 from "@denotest/a"; import * as a2 from "npm:@denotest/a@1"; -import * as a3 from "npm:@denotest/a@workspace"; import * as c from "@denotest/c"; a1.sayHello(); a2.sayHello(); -a3.sayHello(); c.sayHello(); diff --git a/tests/specs/npm/workspace_basic/b/main_byonm.out b/tests/specs/npm/workspace_basic/b/main_byonm.out index 3a311dcd7..6520666f7 100644 --- a/tests/specs/npm/workspace_basic/b/main_byonm.out +++ b/tests/specs/npm/workspace_basic/b/main_byonm.out @@ -1,4 +1,3 @@ Hello 5 Hello 5 -Hello 5 C: Hi! diff --git a/tests/specs/npm/workspace_basic/b/main_global_cache.out b/tests/specs/npm/workspace_basic/b/main_global_cache.out index 1ca11026a..203ac5a99 100644 --- a/tests/specs/npm/workspace_basic/b/main_global_cache.out +++ b/tests/specs/npm/workspace_basic/b/main_global_cache.out @@ -2,5 +2,4 @@ Download http://localhost:4260/@denotest/esm-basic Download http://localhost:4260/@denotest/esm-basic/1.0.0.tgz Hello 5 Hello 5 -Hello 5 C: Hi! diff --git a/tests/specs/npm/workspace_basic/b/main_node_modules_dir.out b/tests/specs/npm/workspace_basic/b/main_node_modules_dir.out index 82a49b9fe..eeb455652 100644 --- a/tests/specs/npm/workspace_basic/b/main_node_modules_dir.out +++ b/tests/specs/npm/workspace_basic/b/main_node_modules_dir.out @@ -3,5 +3,4 @@ Download http://localhost:4260/@denotest/esm-basic/1.0.0.tgz Initialize @denotest/esm-basic@1.0.0 Hello 5 Hello 5 -Hello 5 C: Hi! diff --git a/tests/specs/npm/workspace_basic/main.out b/tests/specs/npm/workspace_basic/main.out new file mode 100644 index 000000000..92404af87 --- /dev/null +++ b/tests/specs/npm/workspace_basic/main.out @@ -0,0 +1,4 @@ +Download http://localhost:4260/@denotest/esm-basic +Download http://localhost:4260/@denotest/esm-basic/1.0.0.tgz +Hello 5 +C: Hi! diff --git a/tests/specs/npm/workspace_basic/main.ts b/tests/specs/npm/workspace_basic/main.ts new file mode 100644 index 000000000..316503b9c --- /dev/null +++ b/tests/specs/npm/workspace_basic/main.ts @@ -0,0 +1,6 @@ +// should resolve these as bare specifiers within the workspace +import * as a from "@denotest/a"; +import * as c from "@denotest/c"; + +a.sayHello(); +c.sayHello(); -- cgit v1.2.3