лежит package-lock.json, то у меня не должен поменяться этот package-lock.json, потому что все зависимости устанавливаются оттуда в соответствии с деревом зависимостей, это утверждение верное или нет?
Верное
Переходите на pnpm
Не всегда
А в каких случаях он меняется тогда? Почему в моем случае он изменился?
Не соответствовал тому, что было в package.json
Тогда другой вопрос, если у меня в package.json все версии будут зафиксированы, то npm install никогда не изменит package-lock.json файл, это утверждение верно или нет?
Обратите внимание, у вас сменилась lockVersion - вы использовали существенно более старый npm чем использовался для создания Лок файла
Хорошо, другое вопрос) Если я выполняю команду npm ci, то я могу быть уверен, что мой лок файл не поменяется? И вот при сборке в докере при билде на продакшн необходимо какую команду выполнять, npm ci или нет?
npm ci, вот она точно никогда ничего не поменветс
Спасибо) А еще такой вопрос, могут ли в npm быть модули зависимые от операционной системы? И может ли быть такое, что я устанавливаю все зависимости на windows, создается лок файл, потом при сборке в докере, при билде на продакшн, где установлен линукс сборка не работает из-за того, что у меня виндовс, а там линукс, такое может быть или нет?
Да, могут, пример модуль fsevents Такого не должно быть, но теоретически возможно
в теории может, но обычно стараются сделать без привязки к платформе знакомые свою либу разрабатывали, так вот она не собиралась под виндой например
А как тогда правильно поступать? Тогда получается, что файл package-lock.json должен комититься после сборки в докере на продакшне? И это будет истиной для всех остальных разработчиков или как?
Вряд ли вам нужны конкретные версии специфичных для ос модулей.
А Нода старше 13 реально зависит от версии винды ? Или запрет на win 7/8 это маркетинг ?
Это слишком редкий кейс, да?
Обсуждают сегодня