Обновление зависимостей может стать нетривиальной задачей, особенно на проектах, которые существуют долгое время. В этой статье будут приведены советы как остаться up-to-date и сделать обновление как можно более безболезненным.
1. Обновляйтесь регулярно
Самые плохие зависимости — устаревшие зависимости. Если вы поддерживаете ваш проект на постоянной основе, обновление одной зависимости не должно занимать больше нескольких минут. На обновление нескольких зависимостей в одно и то же время, особенно если они включают критические изменения (breaking changes), могут уйти часы.
Старайтесь обновляться раз в несколько дней или раз в несколько недель в зависимости от величины проекта, количества зависимостей и скорости с которой обновляются эти зависимости.
2. Правильно определяйте версии
При включении новой зависимости подумайте о том, какая версия вам нужна.
Если предположить, что пакет использует семантическое версионирование (semver), скорее всего лучшим решением будет использовать минорную версию. Т.е. например для Laravel это будет 5.3.*
.
Использование мажорной версии (например, 5.*
) скорее всего будет слишком неопределенно, т.к. Laravel делает значительные изменения между минорными версиями. Использование патч-версии (например, 5.3.19
) чрезмерно точное и усложняет управление зависимостями без необходимости.
3. Используйте менеджер зависимостей с lock-файлом
Lock-файл хранит все зависимости и точные версии, которые были установлены. Если вы подключаете Laravel с версией 5.3.*
, lock-файл будет хранить точную на момент установки версию (например 5.3.1
или 5.3.19
).
Это особенно важно, когда вы работаете в команде. У каждого коллеги будут установлены точно такие же зависимости как и у вас.
Composer использует lock-файл по умолчанию, тут нет проблем. Bower не поддерживает lock-файл и его нужно постараться заменить на другой менеджер если у вас есть такая возможность.
В npm есть возможность использовать lock-файл. После установки зависимостей запустите npm shrinkwrap [--dev]
, эта команда сгенерирует npm-shrinkwrap.json
файл, который нужно закоммитить в репозиторий. Если этот файл присутствует когда вы запускаете npm install
, будут установлены те же версии.
Yarn это новый прекрасный менеджер зависимостей от Facebook, который по умолчанию создает lock-файл. Этот менеджер относительно нов и тяжело сказать о его надежности и готовности к полноценному использованию. Например, в моем случае он не работал потому что общие папки (shared folders) в VirtualBox не поддерживают символические ссылки.
Автор: limonte