diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-07-10 14:46:09 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-10 14:46:09 -0400 |
commit | 4d2d764816d266e42f3b2251248b100abb667c83 (patch) | |
tree | 814e4f208e6824b0d5a4217f14912b2512b185ed | |
parent | 69afa8718f322cf2ef5f5cf5bcecb10f1122f490 (diff) |
feat(jsr): support publishing jsr packages in npm workspaces (#24507)
Supports publishing an npm workspace with a directory structure similar
to the following:
- workspace
- package.json
- package-a
- package.json
- jsr.json
- package-b
- package.json
- jsr.json
deno_config PR: https://github.com/denoland/deno_config/pull/77
Closes https://github.com/denoland/deno/issues/23638
-rw-r--r-- | Cargo.lock | 4 | ||||
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | cli/args/mod.rs | 21 | ||||
-rw-r--r-- | cli/lsp/resolver.rs | 2 | ||||
-rw-r--r-- | tests/specs/publish/npm_workspace/__test__.jsonc | 4 | ||||
-rw-r--r-- | tests/specs/publish/npm_workspace/add/index.ts | 3 | ||||
-rw-r--r-- | tests/specs/publish/npm_workspace/add/jsr.json | 5 | ||||
-rw-r--r-- | tests/specs/publish/npm_workspace/add/package.json | 4 | ||||
-rw-r--r-- | tests/specs/publish/npm_workspace/package.json | 3 | ||||
-rw-r--r-- | tests/specs/publish/npm_workspace/publish.out | 15 | ||||
-rw-r--r-- | tests/specs/publish/npm_workspace/subtract/index.ts | 3 | ||||
-rw-r--r-- | tests/specs/publish/npm_workspace/subtract/jsr.json | 5 | ||||
-rw-r--r-- | tests/specs/publish/npm_workspace/subtract/package.json | 4 |
13 files changed, 62 insertions, 13 deletions
diff --git a/Cargo.lock b/Cargo.lock index 30470c81f..d8b881b37 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1308,9 +1308,9 @@ dependencies = [ [[package]] name = "deno_config" -version = "0.20.4" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96119386ea33783e2a35a3f0c5a960f88edda53f34df9594c9bb8017dcae2367" +checksum = "47d457bbaff2200897ab1f635863c477f10524412a1f568535ea26763b96d5c9" dependencies = [ "anyhow", "deno_semver", diff --git a/Cargo.toml b/Cargo.toml index 13e19979f..1117d3a6b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -101,7 +101,7 @@ console_static_text = "=0.8.1" data-encoding = "2.3.3" data-url = "=0.3.0" deno_cache_dir = "=0.10.0" -deno_config = { version = "=0.20.4", default-features = false } +deno_config = { version = "=0.21.0", default-features = false } dlopen2 = "0.6.1" ecb = "=0.1.2" elliptic-curve = { version = "0.13.4", features = ["alloc", "arithmetic", "ecdh", "std", "pem"] } diff --git a/cli/args/mod.rs b/cli/args/mod.rs index 6a8eaa268..60cc97e2d 100644 --- a/cli/args/mod.rs +++ b/cli/args/mod.rs @@ -1297,15 +1297,18 @@ impl CliOptions { pub fn to_compiler_option_types( &self, ) -> Result<Vec<deno_graph::ReferrerImports>, AnyError> { - self.workspace.to_maybe_imports().map(|maybe_imports| { - maybe_imports - .into_iter() - .map(|(referrer, imports)| deno_graph::ReferrerImports { - referrer, - imports, - }) - .collect() - }) + self + .workspace + .to_compiler_option_types() + .map(|maybe_imports| { + maybe_imports + .into_iter() + .map(|(referrer, imports)| deno_graph::ReferrerImports { + referrer, + imports, + }) + .collect() + }) } pub fn npmrc(&self) -> &Arc<ResolvedNpmRc> { diff --git a/cli/lsp/resolver.rs b/cli/lsp/resolver.rs index d6414697b..f160622ab 100644 --- a/cli/lsp/resolver.rs +++ b/cli/lsp/resolver.rs @@ -115,7 +115,7 @@ impl LspScopeResolver { let npm_graph_resolver = graph_resolver.create_graph_npm_resolver(); let graph_imports = config_data .and_then(|d| d.config_file.as_ref()) - .and_then(|cf| cf.to_maybe_imports().ok()) + .and_then(|cf| cf.to_compiler_option_types().ok()) .map(|imports| { Arc::new( imports diff --git a/tests/specs/publish/npm_workspace/__test__.jsonc b/tests/specs/publish/npm_workspace/__test__.jsonc new file mode 100644 index 000000000..27e899aaa --- /dev/null +++ b/tests/specs/publish/npm_workspace/__test__.jsonc @@ -0,0 +1,4 @@ +{ + "args": "publish --dry-run", + "output": "publish.out" +} diff --git a/tests/specs/publish/npm_workspace/add/index.ts b/tests/specs/publish/npm_workspace/add/index.ts new file mode 100644 index 000000000..8d9b8a22a --- /dev/null +++ b/tests/specs/publish/npm_workspace/add/index.ts @@ -0,0 +1,3 @@ +export function add(a: number, b: number): number { + return a + b; +} diff --git a/tests/specs/publish/npm_workspace/add/jsr.json b/tests/specs/publish/npm_workspace/add/jsr.json new file mode 100644 index 000000000..2f20d6794 --- /dev/null +++ b/tests/specs/publish/npm_workspace/add/jsr.json @@ -0,0 +1,5 @@ +{ + "name": "@scope/add", + "version": "1.0.0", + "exports": "./index.ts" +} diff --git a/tests/specs/publish/npm_workspace/add/package.json b/tests/specs/publish/npm_workspace/add/package.json new file mode 100644 index 000000000..af9d7b752 --- /dev/null +++ b/tests/specs/publish/npm_workspace/add/package.json @@ -0,0 +1,4 @@ +{ + "name": "add", + "version": "1.0.0" +} diff --git a/tests/specs/publish/npm_workspace/package.json b/tests/specs/publish/npm_workspace/package.json new file mode 100644 index 000000000..a5d8565f4 --- /dev/null +++ b/tests/specs/publish/npm_workspace/package.json @@ -0,0 +1,3 @@ +{ + "workspaces": ["./add", "./subtract"] +} diff --git a/tests/specs/publish/npm_workspace/publish.out b/tests/specs/publish/npm_workspace/publish.out new file mode 100644 index 000000000..21c91ae19 --- /dev/null +++ b/tests/specs/publish/npm_workspace/publish.out @@ -0,0 +1,15 @@ +Publishing a workspace... +Check file:///[WILDLINE]/npm_workspace/add/index.ts +Check file:///[WILDLINE]/npm_workspace/subtract/index.ts +Checking for slow types in the public API... +Check file:///[WILDLINE]/npm_workspace/add/index.ts +Check file:///[WILDLINE]/npm_workspace/subtract/index.ts +Simulating publish of @scope/add@1.0.0 with files: + file:///[WILDLINE]/npm_workspace/add/index.ts ([WILDLINE]) + file:///[WILDLINE]/npm_workspace/add/jsr.json ([WILDLINE]) + file:///[WILDLINE]/npm_workspace/add/package.json ([WILDLINE]) +Simulating publish of @scope/subtract@1.0.0 with files: + file:///[WILDLINE]/npm_workspace/subtract/index.ts ([WILDLINE]) + file:///[WILDLINE]/npm_workspace/subtract/jsr.json ([WILDLINE]) + file:///[WILDLINE]/npm_workspace/subtract/package.json ([WILDLINE]) +Warning Aborting due to --dry-run diff --git a/tests/specs/publish/npm_workspace/subtract/index.ts b/tests/specs/publish/npm_workspace/subtract/index.ts new file mode 100644 index 000000000..b5bd2dfcf --- /dev/null +++ b/tests/specs/publish/npm_workspace/subtract/index.ts @@ -0,0 +1,3 @@ +export function subtract(a: number, b: number): number { + return a - b; +} diff --git a/tests/specs/publish/npm_workspace/subtract/jsr.json b/tests/specs/publish/npm_workspace/subtract/jsr.json new file mode 100644 index 000000000..cb003e374 --- /dev/null +++ b/tests/specs/publish/npm_workspace/subtract/jsr.json @@ -0,0 +1,5 @@ +{ + "name": "@scope/subtract", + "version": "1.0.0", + "exports": "./index.ts" +} diff --git a/tests/specs/publish/npm_workspace/subtract/package.json b/tests/specs/publish/npm_workspace/subtract/package.json new file mode 100644 index 000000000..64507c3c7 --- /dev/null +++ b/tests/specs/publish/npm_workspace/subtract/package.json @@ -0,0 +1,4 @@ +{ + "name": "subtract", + "version": "1.0.0" +} |