@@ -58,6 +58,7 @@ use ext_node::DenoFsNodeResolverEnv;
5858use ext_node:: NodeResolver ;
5959use ext_node:: PackageJsonResolver ;
6060
61+ use crate :: import_map:: load_import_map;
6162use crate :: permissions:: RuntimePermissionDescriptorParser ;
6263
6364struct Deferred < T > ( once_cell:: unsync:: OnceCell < T > ) ;
@@ -120,6 +121,7 @@ pub struct EmitterFactory {
120121 sloppy_imports_resolver : Deferred < Option < Arc < CliSloppyImportsResolver > > > ,
121122 workspace_resolver : Deferred < Arc < WorkspaceResolver > > ,
122123
124+ import_map_path : Option < String > ,
123125 cache_strategy : Option < CacheSetting > ,
124126 deno_dir : DenoDir ,
125127 deno_options : Option < Arc < DenoOptions > > ,
@@ -160,6 +162,7 @@ impl EmitterFactory {
160162 sloppy_imports_resolver : Default :: default ( ) ,
161163 workspace_resolver : Default :: default ( ) ,
162164
165+ import_map_path : Default :: default ( ) ,
163166 cache_strategy : None ,
164167 deno_dir,
165168 deno_options : None ,
@@ -180,6 +183,11 @@ impl EmitterFactory {
180183 self
181184 }
182185
186+ pub fn set_import_map_path ( & mut self , value : Option < String > ) -> & mut Self {
187+ self . import_map_path = value;
188+ self
189+ }
190+
183191 pub fn set_cache_strategy (
184192 & mut self ,
185193 value : Option < CacheSetting > ,
@@ -528,8 +536,12 @@ impl EmitterFactory {
528536 ) -> Result < & Arc < WorkspaceResolver > , anyhow:: Error > {
529537 self . workspace_resolver . get_or_try_init ( || {
530538 let options = self . deno_options ( ) ?;
539+ let specified_import_map =
540+ load_import_map ( self . import_map_path . as_deref ( ) ) ?;
541+
531542 let resolver = options. create_workspace_resolver (
532543 self . file_fetcher ( ) ?,
544+ specified_import_map,
533545 if options. use_byonm ( ) {
534546 PackageJsonDepResolution :: Disabled
535547 } else {
0 commit comments