diff options
author | Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com> | 2024-10-02 17:16:46 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-02 17:16:46 -0700 |
commit | 275418473e7bda2b0bd33c86ae54cf3ac8ac5341 (patch) | |
tree | 970102cfb05c67819678f4d29a08a0aaf354bed3 /cli/errors.rs | |
parent | 1e0c9b8c5b85c6c18ecdef0374a945b361d6e79d (diff) |
fix(install): store tags associated with package in node_modules dir (#26000)
Fixes #25998. Fixes https://github.com/denoland/deno/issues/25928.
Originally I was just going to make this an error message instead of a
panic, but once I got to a minimal repro I felt that this really should
work.
The panic occurs when you have `nodeModulesDir: manual` (or a
package.json present), and you have an npm package with a tag in your
deno.json (see the spec test that illustrates this).
This code path only actually executes when trying to choose an
appropriate package version from `node_modules/.deno`, so we should be
able to fix it by storing some extra data at install time.
The fix proposed here is to repurpose the `.initialized` file that we
store in `node_modules` to store the tags associated with a package.
Basically, if you have a version requirement with a tag (e.g.
`npm:chalk@latest`), when we set up the node_modules folder for that
package, we store the tag (`latest`) in `.initialized`. Then, when doing
BYONM resolution, if we have a version requirement with a tag, we read
that file and check if the tag is present.
The downside is that we do more work when setting up `node_modules`. We
_could_ do this only when BYONM is enabled, but that would have the
downside of needing to re-run `deno install` when you switch from auto
-> manual, though maybe that's not a big deal.
Diffstat (limited to 'cli/errors.rs')
0 files changed, 0 insertions, 0 deletions