Как выровнять пакет. json и package-lock. json Когда версии зависимостей не синхронизированы c? - PullRequest
0 голосов
/ 30 января 2020

Что происходит

В пакете. json:

"dependencies": {
    ...
    "node-sass": "^4.13.0"
    ...
}

Запуск npm install

в пакете-замке. json:

"node-sass": {
    "version": "4.13.1",
    ...
}

Что я пробовал

1.

Удаление:

  • package-lock. json
  • node_modules dir

Затем выполняется npm install

2.

Удаление:

  • блокировка пакета. json
  • node_modules dir

Затем выполняется npm install --cache /temp/empty-cache

3.

Удаление:

  • package-lock. json
  • node_modules dir

Затем выполняется npm update

Результат: node-sass не определяется как обновляемый

4.

выполняется npm install node-sass@4.13.1

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

Вопросы

  • Как сделать Я получаю пакет. json и р ackage-lock обратно в syn c, без ручной установки 4.13.1?
  • [Bonus] Почему 4.13.1 всегда устанавливается и используется package-lock. json?
  • [Бонус] Почему узел-sass не идентифицируется как нуждающийся в обновлении?

[РЕДАКТИРОВАТЬ]

Все равно хотел бы получить ответ на этот вопрос, если у кого-нибудь есть такой, который не требует ручного обновления зависимости

1 Ответ

0 голосов
/ 30 января 2020

Эти зависимости - именно то, что вы настроили:

в вашем package.json вы определили ^4.13.0, ^ означает, что вы прекрасно устанавливаете самую последнюю версию этого модуля с основной версией из 4. Поэтому, когда вы запустите npm install, вы установите все зависимости, которые соответствуют этому диапазону semver . Вы можете go глубже в semver .

Если вы хотите заблокировать версию, вам нужно написать "node-sass": "4.13.0" в вашем package.json и воссоздать package-lock.json

Более того, чтобы установить то, что находится в package-lock.json, вам нужно запустить npm ci. Если вы запускаете npm install, вы обновляете свои зависимости в файле блокировки (который будет обновлен)


Как выровнять пакет. json и package-lock. json где зависимость версии не синхронизированы c?

Восстановите блокировку пакета

Пример:

npm init --yes
npm init fastify@2.0.0
// now package-lock has 2.0.0
rm -rf node_modules/
npm install
// now package-lock has 2.0.0 still
rm package-lock.json
npm install fastify@2.5.0 --no-save
npm install
// now package-lock has 2.5.0 (the version is loaded by node_modules tree)
rm package-lock.json
rm -rf node_modules/
npm install
// now package-lock has 2.11.0

Итак, если ваши файлы не синхронизированы c «что-то» запустить установку без использования файла блокировки

...