From dfc5eec43c481b1eeaa0ad069aeba8b7559d4440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Thu, 5 Sep 2024 08:59:12 +0100 Subject: feat: Allow importing .cjs files (#25426) This commit adds support for executing top-level `.cjs` files, as well as import `.cjs` files from within npm packages. This works only for `.cjs` files, the contents of sibling `package.json` are not consulted for the `"type"` field. Closes https://github.com/denoland/deno/issues/25384 --------- Signed-off-by: David Sherret Co-authored-by: Luca Casonato Co-authored-by: David Sherret --- cli/resolver.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'cli') diff --git a/cli/resolver.rs b/cli/resolver.rs index 987e23ee1..5b657b895 100644 --- a/cli/resolver.rs +++ b/cli/resolver.rs @@ -327,7 +327,9 @@ impl NpmModuleLoader { specifier: &ModuleSpecifier, maybe_referrer: Option<&ModuleSpecifier>, ) -> Option> { - if self.node_resolver.in_npm_package(specifier) { + if self.node_resolver.in_npm_package(specifier) + || (specifier.scheme() == "file" && specifier.path().ends_with(".cjs")) + { Some(self.load(specifier, maybe_referrer).await) } else { None @@ -376,7 +378,9 @@ impl NpmModuleLoader { } })?; - let code = if self.cjs_resolutions.contains(specifier) { + let code = if self.cjs_resolutions.contains(specifier) + || (specifier.scheme() == "file" && specifier.path().ends_with(".cjs")) + { // translate cjs to esm if it's cjs and inject node globals let code = match String::from_utf8_lossy(&code) { Cow::Owned(code) => code, -- cgit v1.2.3