Управление зависимостями для проектов Node.js

Менеджер пакетов узлов (npm) — важный инструмент для разработки проектов Node.js. Одна из предоставляемых им услуг — создание и использование файлов package.json и package-lock.json для управления зависимостями проекта. В этой статье объясняется, что это за файлы и как они работают.

пакет.json

Зависимость — это сторонняя библиотека/модуль, который требуется для запуска проекта. Цель файла package.json — записывать зависимости проекта, что значительно упрощает управление и настройку этой информации.

Функциональность также оптимизирует способ совместного использования проектов с другими. Вместо того, чтобы фиксировать всю папку node_modules (где хранятся зависимости) в репозиторий, разработчик фиксирует только написанный им код и файл package.json.

Это сводит к минимуму размер передаваемого кода и снижает вероятность повреждения зависимости. Когда проект клонируется, зависимости устанавливаются непосредственно из реестра npm (где они хранятся).

пакет-lock.json

По замыслу, после установки зависимостей в проекте они могут быть обновлены только разработчиком вручную. Первоначально это создавало проблему в небольшом числе случаев.

Для иллюстрации представьте, что разработчик А устанавливает Dependency (v. 1.0.0) в свой проект. В файле package.json он сохраняется как «Зависимость: ^ 1.0.0», что означает, что можно использовать любую версию, равную или выше 1.0.0.

Пока работает разработчик А, он не замечает выхода версии 1.1.0 и коммитит свой проект на Github.

Разработчику B поручено работать с разработчиком A. До версии 5.0.0 npm использовал файл package.json, чтобы решить, какие зависимости установить, по умолчанию с самой последней доступной версией. Когда разработчик Б устанавливает зависимости, устанавливается Dependency v. 1.1.0.

В большинстве случаев это не вызовет проблем, но обновление внесло небольшую корректировку в функциональность зависимости, которая не совместима с исходной сборкой «Разработчик от имени» и приводит к сбою проекта.

Для предотвращения этого был введен файл package-lock.json. Цель файлов — записать версии всех зависимостей, установленных в исходной сборке. Это гарантирует, что каждая клонированная сборка проекта соответствует оригиналу.

Резюме

npm использует файлы package.json и package-lock.json, чтобы помочь разработчику управлять своим проектом. Файл package.json записывает зависимости проекта, что значительно упрощает его обслуживание и настройку. Файл package-lock.json записывает версии всех установленных зависимостей, поэтому при клонировании проекта новая сборка будет соответствовать исходной.