summaryrefslogtreecommitdiff
path: root/cli/tools
diff options
context:
space:
mode:
authorNathan Whitaker <17734409+nathanwhit@users.noreply.github.com>2024-10-15 09:38:42 -0700
committerGitHub <noreply@github.com>2024-10-15 16:38:42 +0000
commit797405fc61b2d155941506fb53d498076e121017 (patch)
treed53cc3a2375ee64770ab0904804b0ecf512be0b1 /cli/tools
parent533a9b108677f1560fe55882771a0be2bb0b0fd2 (diff)
fix(add): create deno.json when running `deno add jsr:<pkg>` (#26275)
Fixes https://github.com/denoland/deno/issues/26119. Originally I wanted to put them in package.json if there's no deno.json, but on second thought it makes more sense to just create a deno.json
Diffstat (limited to 'cli/tools')
-rw-r--r--cli/tools/registry/pm.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/cli/tools/registry/pm.rs b/cli/tools/registry/pm.rs
index 3276acfbf..ff900d113 100644
--- a/cli/tools/registry/pm.rs
+++ b/cli/tools/registry/pm.rs
@@ -400,14 +400,17 @@ impl std::fmt::Display for AddCommandName {
fn load_configs(
flags: &Arc<Flags>,
+ has_jsr_specifiers: impl FnOnce() -> bool,
) -> Result<(CliFactory, Option<NpmConfig>, Option<DenoConfig>), AnyError> {
let cli_factory = CliFactory::from_flags(flags.clone());
let options = cli_factory.cli_options()?;
let npm_config = NpmConfig::from_options(options)?;
let (cli_factory, deno_config) = match DenoConfig::from_options(options)? {
Some(config) => (cli_factory, Some(config)),
- None if npm_config.is_some() => (cli_factory, None),
- None => {
+ None if npm_config.is_some() && !has_jsr_specifiers() => {
+ (cli_factory, None)
+ }
+ _ => {
let factory = create_deno_json(flags, options)?;
let options = factory.cli_options()?.clone();
(
@@ -427,7 +430,9 @@ pub async fn add(
add_flags: AddFlags,
cmd_name: AddCommandName,
) -> Result<(), AnyError> {
- let (cli_factory, npm_config, deno_config) = load_configs(&flags)?;
+ let (cli_factory, npm_config, deno_config) = load_configs(&flags, || {
+ add_flags.packages.iter().any(|s| s.starts_with("jsr:"))
+ })?;
let mut npm_config = ConfigUpdater::maybe_new(npm_config).await?;
let mut deno_config = ConfigUpdater::maybe_new(deno_config).await?;
@@ -764,7 +769,7 @@ pub async fn remove(
flags: Arc<Flags>,
remove_flags: RemoveFlags,
) -> Result<(), AnyError> {
- let (_, npm_config, deno_config) = load_configs(&flags)?;
+ let (_, npm_config, deno_config) = load_configs(&flags, || false)?;
let mut configs = [
ConfigUpdater::maybe_new(npm_config).await?,