mirror of
https://github.com/denoland/deno.git
synced 2024-11-25 15:29:32 -05:00
fix(install): compare versions directly to decide whether to create a child node_modules dir for a workspace member (#26001)
Fixes #25861. Previously we were attempting to match the version requirement against the version already present in `node_modules` root, and if they didn't match we would create a node_modules dir in the workspace member's directory with the dependency. Aside from the fact that this caused the panic, on second thought it just doesn't make sense in general. We shouldn't be semver matching, as resolution has already occurred and decided what package versions are required. Instead, we can just compare the versions directly.
This commit is contained in:
parent
cac28b5262
commit
cb74975ab2
5 changed files with 26 additions and 3 deletions
|
@ -518,9 +518,9 @@ async fn sync_resolution_with_fs(
|
||||||
// linked into the root
|
// linked into the root
|
||||||
match found_names.entry(remote_alias) {
|
match found_names.entry(remote_alias) {
|
||||||
Entry::Occupied(nv) => {
|
Entry::Occupied(nv) => {
|
||||||
alias_clashes
|
// alias to a different package (in case of duplicate aliases)
|
||||||
|| remote.req.name != nv.get().name // alias to a different package (in case of duplicate aliases)
|
// or the version doesn't match the version in the root node_modules
|
||||||
|| !remote.req.version_req.matches(&nv.get().version) // incompatible version
|
alias_clashes || &remote_pkg.id.nv != *nv.get()
|
||||||
}
|
}
|
||||||
Entry::Vacant(entry) => {
|
Entry::Vacant(entry) => {
|
||||||
entry.insert(&remote_pkg.id.nv);
|
entry.insert(&remote_pkg.id.nv);
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"tempDir": true,
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"args": "install",
|
||||||
|
"output": "install.out"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
Download http://localhost:4260/@denotest/esm-basic
|
||||||
|
Download http://localhost:4260/@denotest/esm-basic/1.0.0.tgz
|
||||||
|
Initialize @denotest/esm-basic@1.0.0
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"@denotest/esm-basic": "latest"
|
||||||
|
},
|
||||||
|
"workspaces": ["package1"]
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"@denotest/esm-basic": "latest"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue