diff options
Diffstat (limited to 'cli/args/import_map.rs')
-rw-r--r-- | cli/args/import_map.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/cli/args/import_map.rs b/cli/args/import_map.rs index d06c4d385..767d0f770 100644 --- a/cli/args/import_map.rs +++ b/cli/args/import_map.rs @@ -96,3 +96,32 @@ fn print_import_map_diagnostics(diagnostics: &[ImportMapDiagnostic]) { ); } } + +pub fn enhance_import_map_value_with_workspace_members( + mut import_map_value: serde_json::Value, + workspace_members: &[deno_config::WorkspaceMemberConfig], +) -> serde_json::Value { + let mut imports = + if let Some(imports) = import_map_value.get("imports").as_ref() { + imports.as_object().unwrap().clone() + } else { + serde_json::Map::new() + }; + + for workspace_member in workspace_members { + let name = &workspace_member.package_name; + let version = &workspace_member.package_version; + // Don't override existings, explicit imports + if imports.contains_key(name) { + continue; + } + + imports.insert( + name.to_string(), + serde_json::Value::String(format!("jsr:{}@^{}", name, version)), + ); + } + + import_map_value["imports"] = serde_json::Value::Object(imports); + ::import_map::ext::expand_import_map_value(import_map_value) +} |