support 447 Опубликовано 22 февраля, 2019 Жалоба Share Опубликовано 22 февраля, 2019 Для чего нужен файл package-lock.json ?! и для чего его нужно использовать и добавлять в системы контроля версий (git и т.д.). В этом файлы описана вся структура зависимостей, версий, что в каком поярдке ставилось, какие пакеты, каких версий, что от чего зависит, какие версии были у вложенных зависимостей и т.д. Это нужно для того, что б получить единое рабочее окружение для всех разработчиков. Если у Вас есть файл package.json и package-lock.json и Ваш исходный код без ошибок, Вы можете быть уверены, что у Вас всё запустится. Раз разработчик уже всё проверил и выложил свой lock файл, с описанием рабочего окружения, Вы тоже получаете такое же проверенное рабочее окружение у себя на компе. Просто выполняете npm install и выгружаете зависимости в том порядке и тех же версий, который были у разработчика в проверенном окружении. Почему это Важно и почему могут быть проблемы без package-lock.json?! Потому что версии используемыех зависимостей постоянно меняются, версии вложенных пакетов тоже меняют, т.е. какая-то несуществуюнная библиотека вытягивает какой-то свой пакет старой версии и только на этой старой версии эта библиотека работает и т.д., какие-то пакеты утаревают, меняют названия и т.д. и т.п. Вот всё это и описывается в package-lock.json, все эти возможные проблемные места. Важно сохранить рабочее окружение, проверенное, на котором всё запускается. Да, файл package-lock.json - это автоматически герерируемый файл при выполнении в первый раз команды npm install и по логике вещей, в системе контроля версий не должно быть автоматически генерируемых файлов, достаточно лишь списка зависимотей pakcage.json Но на практике это не вегда так. К примеру, сделали Вы проект, всё проверили, всё работает, удалили папку node_modules со всеми пакетами, оставили package.json с номерами версий и всё, добавили всё-таки в git или просто в архив запаковали и отложили архив до лучших времени, либо может передали другому разработчику. В этом случае, велика вероятность, что, к премеру, через год, у Вас ничего не запустится из этого архива, если Вы просто сделаете npm install Потому что за год поменялись многие пакеты, различные версии, зависимости внутри других зависимостей и т.д. и т.п. Даже у Вас как автора кода могут возникнуть такие проблемы, а сторонний разработчик даже и запустить проект не сможет. В итоге часто получается, так, что код, который работает без проблем сегодня, завтра просто не будет работать из-за изменений в зависимых пакетах. Вот для этого и нужен файл package-lock.json Который, условно говоря, делает снимок системы, на момент когда приложения запускалось и успешно работало. Благодаря такому снимку, любой человек, который будет работать с исходным кодом через год, к примеру, получит точно такое же окружение для запуска проекта как и год назад, т.е. с большой долей вероятности он его запустит без проблем и через год. Без такого снимка, без файла package-lock.json, только с файлом зависимостей package.json, есть большая вероятность, через город просто ничего не запутится. Так что, если Вы запустили проект, приложение и оно рабтает сейчас, на данный момент времени, возьмите Ваш сгенерированный файл package-json.lock и добавьте его в системы контроля версий. Для будущих пользователей Вашего приложения, они скажут Вам спасибо. Да и для себя тоже, если Вы отложите например в сторону работу с кодом и вернётесь к нему через год, условно говоря. Файл package-lock.json сэкономит Вам кучу времени. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения