diff options
Diffstat (limited to 'cli/tools/vendor/import_map.rs')
-rw-r--r-- | cli/tools/vendor/import_map.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/cli/tools/vendor/import_map.rs b/cli/tools/vendor/import_map.rs index dbda81a3a..a23dde805 100644 --- a/cli/tools/vendor/import_map.rs +++ b/cli/tools/vendor/import_map.rs @@ -14,6 +14,7 @@ use import_map::SpecifierMap; use indexmap::IndexMap; use log::warn; +use crate::args::JsxImportSourceConfig; use crate::cache::ParsedSourceCache; use super::mappings::Mappings; @@ -182,6 +183,7 @@ pub fn build_import_map( modules: &[&Module], mappings: &Mappings, original_import_map: Option<&ImportMap>, + jsx_import_source: Option<&JsxImportSourceConfig>, parsed_source_cache: &ParsedSourceCache, ) -> Result<String, AnyError> { let mut builder = ImportMapBuilder::new(base_dir, mappings); @@ -193,6 +195,21 @@ pub fn build_import_map( .add(base_specifier.to_string(), base_specifier); } + // add the jsx import source to the destination import map, if mapped in the original import map + if let (Some(import_map), Some(jsx_import_source)) = + (original_import_map, jsx_import_source) + { + if let Some(default_specifier) = &jsx_import_source.default_specifier { + let specifier_text = + format!("{}/{}", default_specifier, jsx_import_source.module); + if let Ok(resolved_url) = + import_map.resolve(&specifier_text, import_map.base_url()) + { + builder.imports.add(specifier_text, &resolved_url); + } + } + } + Ok(builder.into_import_map(original_import_map).to_json()) } |