mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
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
This commit is contained in:
parent
69afa8718f
commit
4d2d764816
13 changed files with 62 additions and 13 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -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",
|
||||
|
|
|
@ -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"] }
|
||||
|
|
|
@ -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> {
|
||||
|
|
|
@ -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
|
||||
|
|
4
tests/specs/publish/npm_workspace/__test__.jsonc
Normal file
4
tests/specs/publish/npm_workspace/__test__.jsonc
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"args": "publish --dry-run",
|
||||
"output": "publish.out"
|
||||
}
|
3
tests/specs/publish/npm_workspace/add/index.ts
Normal file
3
tests/specs/publish/npm_workspace/add/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
|||
export function add(a: number, b: number): number {
|
||||
return a + b;
|
||||
}
|
5
tests/specs/publish/npm_workspace/add/jsr.json
Normal file
5
tests/specs/publish/npm_workspace/add/jsr.json
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"name": "@scope/add",
|
||||
"version": "1.0.0",
|
||||
"exports": "./index.ts"
|
||||
}
|
4
tests/specs/publish/npm_workspace/add/package.json
Normal file
4
tests/specs/publish/npm_workspace/add/package.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"name": "add",
|
||||
"version": "1.0.0"
|
||||
}
|
3
tests/specs/publish/npm_workspace/package.json
Normal file
3
tests/specs/publish/npm_workspace/package.json
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"workspaces": ["./add", "./subtract"]
|
||||
}
|
15
tests/specs/publish/npm_workspace/publish.out
Normal file
15
tests/specs/publish/npm_workspace/publish.out
Normal file
|
@ -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
|
3
tests/specs/publish/npm_workspace/subtract/index.ts
Normal file
3
tests/specs/publish/npm_workspace/subtract/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
|||
export function subtract(a: number, b: number): number {
|
||||
return a - b;
|
||||
}
|
5
tests/specs/publish/npm_workspace/subtract/jsr.json
Normal file
5
tests/specs/publish/npm_workspace/subtract/jsr.json
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"name": "@scope/subtract",
|
||||
"version": "1.0.0",
|
||||
"exports": "./index.ts"
|
||||
}
|
4
tests/specs/publish/npm_workspace/subtract/package.json
Normal file
4
tests/specs/publish/npm_workspace/subtract/package.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"name": "subtract",
|
||||
"version": "1.0.0"
|
||||
}
|
Loading…
Reference in a new issue