10. Пакетные менеджеры

10. Пакетные менеджеры

10.1. Пакетный менеджер (npm, yarn, pnpm)

В проекте должен быть только 1 пакетный менеджер

10.2. Фиксируем версии в package.json

💡

Теория:

Файл package.json позволяет указать диапазон версий пакетов, которые нужно ставить. Cистема версий и пакетов подчиняется спецификации semver (opens in a new tab)

  • X.1.1, где X — это мажорная версия, которая может содержать несовместимые с предыдущей версией изменения
  • 1.X.1, где X — это минорная версия, которая скорее всего содержит совместимые с предыдущей версией изменения
  • 1.1.X, где X — это патч-версия, которая содержит различные исправления
package.json
  "dependencies": {
    "package-name": "major.minor.patch"
    // Пример:
    "next": "13.5.4",
    }
package.json
"dependencies": {
"lodash": "^4.17.21", // Каретка: (символ ^):
    // Можно обновлять и минорную версию и накатывать патчи.
    // Т.е. от 4.17.21 до 5.0.0.
"react": "~17.0.1"    // Тильда: (символ ~):
    // Могут применятся только патчи, а минорная версия обновлятся не может.
    // Т.е. от 17.0.1 до 17.1.0.
"react-dom": "18.2.0" // Фиксированная версия.
    // Только данная версия 18.2.0
  }

Доводы в пользу фиксации версий:

  • Предсказуемость сборки: Фиксация версий обеспечивает предсказуемость ваших сборок. Когда вы точно знаете, какая версия каждого пакета используется, это уменьшает риск неожиданных проблем, возникающих из-за обновлений пакетов.
  • Работа в команде: Если вы работаете в команде, фиксация версий помогает гарантировать, что все члены команды используют одинаковые версии пакетов. Это упрощает совместную разработку и предотвращает конфликты.
  • Устойчивость продукта: Фиксация версий пакетов может уменьшить вероятность возникновения проблем с обновлениями, которые могут нарушить функциональность вашего приложения.

10.3. Обновление библиотек в package.json

⭕ (in progress)

По хорошему автоматически настроить обновление версий, но можно просто руками раз в неделю обновлять версии библиотек