diff options
author | Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com> | 2024-10-15 09:38:42 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-15 16:38:42 +0000 |
commit | 797405fc61b2d155941506fb53d498076e121017 (patch) | |
tree | d53cc3a2375ee64770ab0904804b0ecf512be0b1 /cli/tools | |
parent | 533a9b108677f1560fe55882771a0be2bb0b0fd2 (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.rs | 13 |
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?, |