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)
По хорошему автоматически настроить обновление версий, но можно просто руками раз в неделю обновлять версии библиотек