summaryrefslogtreecommitdiff
path: root/cli/tools/vendor/import_map.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tools/vendor/import_map.rs')
-rw-r--r--cli/tools/vendor/import_map.rs17
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())
}