diff --git a/crates/deno_facade/emitter.rs b/crates/deno_facade/emitter.rs
index 1307b762..8990de56 100644
--- a/crates/deno_facade/emitter.rs
+++ b/crates/deno_facade/emitter.rs
@@ -47,6 +47,8 @@ use deno::resolver::CliDenoResolverFs;
 use deno::resolver::CliNpmReqResolver;
 use deno::resolver::CliResolver;
 use deno::resolver::CliResolverOptions;
+use deno::resolver::CliSloppyImportsResolver;
+use deno::resolver::SloppyImportsCachedFs;
 use deno::util::fs::canonicalize_path_maybe_not_exists;
 use deno::DenoOptions;
 use deno::PermissionsContainer;
@@ -115,6 +117,7 @@ pub struct EmitterFactory {
   resolved_npm_rc: Deferred<Arc<ResolvedNpmRc>>,
   resolver: Deferred<Arc<CliResolver>>,
   root_permissions_container: Deferred<PermissionsContainer>,
+  sloppy_imports_resolver: Deferred<Option<Arc<CliSloppyImportsResolver>>>,
   workspace_resolver: Deferred<Arc<WorkspaceResolver>>,
 
   cache_strategy: Option<CacheSetting>,
@@ -154,6 +157,7 @@ impl EmitterFactory {
       resolved_npm_rc: Default::default(),
       resolver: Default::default(),
       root_permissions_container: Default::default(),
+      sloppy_imports_resolver: Default::default(),
       workspace_resolver: Default::default(),
 
       cache_strategy: None,
@@ -404,7 +408,7 @@ impl EmitterFactory {
             node_resolver: self.node_resolver().await?.clone(),
             npm_req_resolver: self.npm_req_resolver().await?.clone(),
           }),
-          sloppy_imports_resolver: None,
+          sloppy_imports_resolver: self.sloppy_imports_resolver()?.cloned(),
           workspace_resolver: self.workspace_resolver()?.clone(),
           is_byonm: options.use_byonm(),
           maybe_vendor_dir: options.vendor_dir_path(),
@@ -504,6 +508,21 @@ impl EmitterFactory {
     })
   }
 
+  pub fn sloppy_imports_resolver(
+    &self,
+  ) -> Result<Option<&Arc<CliSloppyImportsResolver>>, AnyError> {
+    self
+      .sloppy_imports_resolver
+      .get_or_try_init(|| {
+        Ok(self.deno_options()?.unstable_sloppy_imports().then(|| {
+          Arc::new(CliSloppyImportsResolver::new(SloppyImportsCachedFs::new(
+            self.fs().clone(),
+          )))
+        }))
+      })
+      .map(|maybe| maybe.as_ref())
+  }
+
   pub fn workspace_resolver(
     &self,
   ) -> Result<&Arc<WorkspaceResolver>, anyhow::Error> {
diff --git a/deno/lib.rs b/deno/lib.rs
index c1b5b7fd..d2e1579a 100644
--- a/deno/lib.rs
+++ b/deno/lib.rs
@@ -115,6 +115,10 @@ impl DenoOptions {
     self.builder.unstable_detect_cjs.unwrap_or_default()
   }
 
+  pub fn unstable_sloppy_imports(&self) -> bool {
+    self.workspace().has_unstable("sloppy-imports")
+  }
+
   fn byonm_enabled(&self) -> bool {
     self.node_modules_dir().ok().flatten() == Some(NodeModulesDirMode::Manual)
   }