Skip to content
This repository has been archived by the owner on Jan 20, 2022. It is now read-only.

[DRAFT] omit resolved from registry dependencies #352

Closed
wants to merge 2 commits into from

Conversation

everett1992
Copy link

Start npm/rfcs#486. This implements $disable-write-resolves without
creating an option. Next I'll figure out how to plumb a npm config
option thru to shrinkwrap.

@everett1992 everett1992 force-pushed the remove-registry-resolve branch 3 times, most recently from 28a2d21 to 151a31f Compare December 23, 2021 00:34
Implement `$disable-write-resolves` described in npm/rfcs#486.  I named
the option `omitLockfileRegistryResolved` but that can be changed later.

Put simply, this option causes npm to create lock files without a
`resolved` key for registry dependencies forcing npm to use the current
configured registry and resolve package tarball urls on install. This
fixes install errors when users change registries and the recorded
resolved url is incorrect.

This option causes slower installs because npm must fetch each packages
manifest to find the tarball url, but it's the most comprehensive
solution to this problem. Options like recording always the default
registry, or recording a special 'current registry' sigil will break if
registries host tarballs at different paths. For example
`${REGISTRY}/npm/-/npm-8.3.0.tgz` only works if all registries host
tarballs at `npm/-/npm-8.3.0.tgz`.
@everett1992 everett1992 force-pushed the remove-registry-resolve branch from 151a31f to 9a0c1e8 Compare January 3, 2022 21:29
@everett1992 everett1992 marked this pull request as ready for review January 3, 2022 21:29
@everett1992 everett1992 requested a review from a team as a code owner January 3, 2022 21:29
Create shrinkwrap files with resolved urls modified to replace the
configured registry with the default registry,
https://registry.npmjs.org.

The default registry is a magic value meaning the current registry, so
recording resolved with the default registry allows users to switch to a
different registry without removing their lockfile. The path portion of
the acutal resolved url is preserved so this trick only works when the
different registries host tarballs at the same relative paths. It's
faster than the omitLockfileRegistryResolved option because npm doesn't
need to fetch each pacument to resolve the tarball url.
@fritzy
Copy link
Contributor

fritzy commented Jan 19, 2022

@everett1992 Arborist is now maintained as a workspace in the CLI, but still published independently. I've moved your PR to npm/cli#4261 and you remain the author of the commits.

@fritzy fritzy closed this Jan 19, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants