summaryrefslogtreecommitdiff
path: root/cli/args
diff options
context:
space:
mode:
Diffstat (limited to 'cli/args')
-rw-r--r--cli/args/import_map.rs29
-rw-r--r--cli/args/mod.rs5
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()