support 446 Posted February 22, 2019 Report Share Posted February 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 сэкономит Вам кучу времени. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.