diff options
Diffstat (limited to 'cli/args')
-rw-r--r-- | cli/args/import_map.rs | 29 | ||||
-rw-r--r-- | cli/args/mod.rs | 5 |
2 files changed, 34 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) +} diff --git a/cli/args/mod.rs b/cli/args/mod.rs index 60d9710de..6c84abac2 100644 --- a/cli/args/mod.rs +++ b/cli/args/mod.rs @@ -67,6 +67,7 @@ use std::path::PathBuf; use std::sync::Arc; use thiserror::Error; +use crate::args::import_map::enhance_import_map_value_with_workspace_members; use crate::file_fetcher::FileFetcher; use crate::util::fs::canonicalize_path_maybe_not_exists; use crate::version; @@ -975,6 +976,10 @@ impl CliOptions { base_import_map_config, children_configs, ); + let import_map = enhance_import_map_value_with_workspace_members( + import_map, + &workspace_config.members, + ); log::debug!( "Workspace config generated this import map {}", serde_json::to_string_pretty(&import_map).unwrap() |