Sign in to follow this  
support

Подсказка по npm, package.json, package-lock.json и почему это важно!

Recommended Posts

support

Для чего нужен файл 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 сэкономит Вам кучу времени.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this