Обновление зависимостей может стать нетривиальной задачей, особенно на проектах, которые существуют долгое время. В этой статье будут приведены советы как остаться up-to-date и сделать обновление как можно более безболезненным.

image


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 не поддерживают символические ссылки.
Поделиться с друзьями
-->

Комментарии (6)


  1. prefrontalCortex
    30.10.2016 18:46
    +1

    Например, в моем случае он не работал потому что общие папки (shared folders) в VirtualBox не поддерживают символические ссылки.
    Говорят, можно заставить поддерживать.


  1. stepanp
    30.10.2016 20:15
    -1

    Зависимости отстой


  1. BasicWolf
    30.10.2016 21:02

    Очень поверхностная статья. «Регулярно обновляйтесь» — это очень хорошо в теории, но на практике в проекте с эдак 20-30 зависимостями, ой как легко всё сломать, из-за кривой обратной совместимости в каком-либо пакете.
    ИМХО, для серьёзных проектов более приемлим подход а-ля Debian Stable, с пусть устаревшими, но проверенными временем зависимостями и обновлениями являющимися фиксами, а не апгрейдами.


    1. Fedcomp
      30.10.2016 21:20
      +1

      > ой как легко всё сломать
      Тесты.


      1. BasicWolf
        30.10.2016 21:38

        Допустим проект с пятилетним легаси, для которого тесты изначально не писались?


        1. limonte
          30.10.2016 21:40

          Регулярно обновлять зависимости и регулярно дописывать тесты.