Диапазон Caret и package-lock.json: как получить с ними последние версии без взлома? - PullRequest
0 голосов
/ 25 апреля 2018

Я получил то, что означает package-lock.json, но я не понимаю, как работает диапазон каретки после добавления этого файла?

Скажем, у меня есть пакет (my-module), который я хочу иметьвсе новые неработающие версии без указания новых версий вручную.Я устанавливаю последнюю версию, и это результат в файле package.json:

"my-module": "^4.1.1"

Однако package-lock.json также обновляется с исправлением версии my-module в 4.1.1.

В следующий раз выйдет новая версия my-module: 4.1.2.Запуск npm i будет не установить его, так как версия в package-lock.json установлена ​​на старую версию.

Вопрос

Как мне добиться, чтобы npm iскачать последнюю версию my-module без прерываний, не создавая новый файл package-lock.json все время?Этот файл только что стал недействительным с использованием диапазона каретки?

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Хотя я не люблю просто публиковать фрагменты документации дословно , я чувствую, что это лучший источник, чтобы объяснить, почему именно то, что вы просите, это именно то, что package-lock.json был разработан, чтобы НЕ ОБЯЗАТЕЛЬНО ДЕЛАТЬ:

  1. package-lock.json автоматически генерируется для любых операций, где npm изменяет либо дерево node_modules , либо package.json .

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

КОГДА package.json подается в npm i, результатом операции является файловая система node_modules , соответствующая всем зависимостям, объявленным в package.json файл.

Эта операция НЕ ДАЕТ все время один и тот же результат: даже при использовании одного и того же файла package.json . И есть веская причина, по которой npm i был разработан для этого, а именно:

  • Если новая версия пакета прямого semver-range была опубликована с момента последней установки ваших пакетов, и, следовательно, будет использоваться более новая версия.
0 голосов
/ 25 апреля 2018

Мы придумали идею использования preinstall функциональности package.json.

Так что в вашем файле package.json под тегом scripts вы добавляете: "preinstall": "npm update".

Поскольку npm update обновляет только пакеты, на которые распространяется синтаксис диапазона каретки, вы можете иметь как package-lock.json, так и последние обновления.

...