Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 9038|Ответ: 0

Какой package-lock.json генерируется установкой npm?

[Скопировать ссылку]
Опубликовано 13.12.2017 13:17:45 | | |
Для изменения node_modules дерева или любого действия package.json NPM автоматически генерируется package-lock.json. Он описывает конкретное дерево, которое генерируется, чтобы последующие установки могли генерировать то же дерево, независимо от промежуточных обновлений зависимостей.

Этот файл предназначен для отправки в репозиторий исходного кода и доступен для различных целей:

Описывает единое представление дерева зависимостей, чтобы гарантировать, что участники команды, развертывания и непрерывная интеграция обеспечивают установку абсолютно одинаковых зависимостей.

Предоставить пользователям инструмент для «перехода» в предыдущее состояние node_modules без необходимости коммитировать сам каталог.

Облегчить лучшую видимость изменений деревьев за счёт читаемых различий в системе управления исходным кодом.

И оптимизировать процесс установки, позволяя npm пропускать дублирование разрешения метаданных ранее установленных пакетов.

Ключевая деталь package-lock.json заключается в том, что его нельзя выпустить, и он будет игнорирован, если он найдётся где-либо вне топового пакета. Формат похож на npm-shrinkwrap.json, по сути это тот же файл, но позволяет публиковать. Это не рекомендуется, если только вы не внедряете CLI-инструмент или не используете процесс релиза для создания производственного пакета.

Если и package-lock.json, и npm-shrinkwrap.json существуют в корневой директории пакета, package-lock.json будет полностью игнорироваться.

Оригинальная ссылка: https://docs.npmjs.com/files/package-lock.json


С момента выхода npm 5.x роль блокировки 5.6.0 менялась много раз, и теперь многие мелкие белые тексты в Интернете застрели в предыдущем переводе документов.

Я обновил с npm3.x до npm5, но обнаружил, что явление при выполнении 'npm i' не соответствует популярной научной статье в Интернете.

Упоминается, что независимо от того, как package.json файл изменяется, если npm i выполняется многократно, npm будет скачана согласно информации о версии, описанной в файле блокировки.

Также упоминается, что при повторении npm i npm игнорирует информацию о блокировке и скачает модуль обновления согласно информации о версии версии пакета в package.json (блокировка, похоже, бесполезна).

**Согласно информации, правила npm i менялись три раза с момента выхода npm 5.0. **

1. NPM 5.0.x версии, независимо от того, как меняется package.json, npm i будет скачана согласно файлу блокировки

package-lock.json файл не обновляется после того package.json как файл был изменён · Выпуск #16866 · НПМ/НПМ https://github.com/npm/npm/issues/16866
Эта проблема жалуется на эту проблему, очевидно, я менял package.json вручную, почему бы вам не предложить мне пакет обновления! А затем это приводит к проблеме 5.1.0...

2. После версии 5.1.0 установка npm игнорирует файл блокировки для загрузки последнего npm

Тогда кто-то поднял этот вопрос: почему блокировка пакета игнорируется? · Выпуск #17979 · НПМ/НПМ https://github.com/npm/npm/issues/17979
Жалоба со временем эволюционировала в правила после версии 5.4.2.

3. После версии 5.4.2 почему блокировка пакета игнорируется? · Выпуск #17979 · НПМ/НПМ https://github.com/npm/npm/issues/17979


Грубо говоря, если package.json изменен, и package.json отличается от файла блокировки, npm скачает последний пакет согласно номеру версии и семантическому смыслу при выполнении 'npm i' и обновит его до блокировки.

Если оба находятся в одном состоянии, то при выполнении npm я скачиваю по блокировке, независимо от того, новая ли версия пакета.






Предыдущий:Делайте статистику и дополняйте временной метод без данных
Следующий:Туториал по npm (4): Устанавливайте NPM-пакеты локально
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com