Какой смысл разрешать URL в package-lock.json? - PullRequest
0 голосов
/ 17 декабря 2018

всякий раз, когда я генерирую файл блокировки пакета, есть также «разрешенный» блок, который выглядит следующим образом:

"resolved": "http://devel.npm.registry:4873/lodash/-/lodash-4.17.5.tgz"

В чем смысл этого URL?Позже, если я попытаюсь установить зависимости на основе этой блокировки пакетов, нужно ли мне использовать тот же реестр npm?Потому что мы используем другой реестр npm для локальной разработки и производственных сборок.Таким образом, когда я разрабатываю, я использую devel.npm.registry, но инструмент CI использует production.npm.registry.Согласно моим тестам, URL не имеет значения (я пробовал npm@6.4.1).Но это текущая реализация, которая скоро изменится, или URL намеренно игнорируется?У меня такое ощущение, что некоторые из предыдущих версий npm действительно проверяли разрешенные URL-адреса.

Документация не очень полезна в этом случае.

1 Ответ

0 голосов
/ 18 декабря 2018

Я нашел несколько статей в Интернете по этому вопросу.Перейдите по ссылкам:

npm использует JSON в качестве формата файла блокировки.Хорошая новость заключается в том, что npm@5.0.0 игнорирует разрешенное поле в файле package-lock.json и в основном резервное поле, определенное в аргументе .npmrc или через аргумент --registry с использованием CLI, если он существует, в противном случае он будетиспользуйте определенное в разрешенном поле.

https://medium.com/verdaccio/verdaccio-and-deterministic-lock-files-5339d82d611e


В другой день, еще один твит о # npm5 вкусностях.

npm - этоТеперь нет информации о том, какой реестр вы использовали для создания package-lock.json.

https://twitter.com/maybekatz/status/862834964932435969


Цель решена в package-lock.jsonэто обойти шаг разрешения зависимостей (выборки метаданных), когда вы пропускаете пакеты.честность, чтобы убедиться, что вы получаете то же самое.Без разрешенного поля не кэшированные установки могут прерваться из-за изменений метаданных, и они также будут значительно медленнее, потому что мы должны сделать полную выборку метаданных, прежде чем мы сможем что-либо скачать.

Обратите внимание, что package-lock.json не позволяет получать разные пакеты из разных реестров.Даже если у вас есть блокировка пакетов с разными пакетами, использующими разные разрешенные поля, все пакеты всегда будут извлекаться из того, что есть в вашем текущем параметре реестра = в npmrc.разрешенные поля, которые не соответствуют настроенному реестру, будут проходить через (более медленную) выборку метаданных, о которой я упоминал выше, но все равно будут выбираться только из текущего реестра.

https://github.com/npm/npm/issues/16849#issuecomment-312442508

...