mirror of
https://github.com/smmarty/friflex_flutter_starter.git
synced 2025-12-22 01:20:46 +00:00
26 lines
2.8 KiB
Markdown
26 lines
2.8 KiB
Markdown
|
|
# Управление файлом pubspec.lock
|
|||
|
|
|
|||
|
|
На проекте возникает необходимость определить стратегию работы с файлом pubspec.lock.
|
|||
|
|
Данный файл может либо храниться в репозитории, либо быть добавлен в .gitignore.
|
|||
|
|
Оба варианта имеют свои преимущества и недостатки, которые следует учесть.
|
|||
|
|
См [issue](https://github.com/smmarty/flutter_team/issues/20)
|
|||
|
|
|
|||
|
|
#### Аргументы за хранение pubspec.lock
|
|||
|
|
|
|||
|
|
1. Повторяемость сборки. Файл фиксирует конкретные версии зависимостей, обеспечивая единообразие версий для всех разработчиков и сред сборки.
|
|||
|
|
2. Избежание неожиданных изменений. Новые версии зависимостей могут внести изменения, способные нарушить сборку или логику приложения. Наличие pubspec.lock позволяет контролировать изменения и избегать неожиданных обновлений.
|
|||
|
|
3. Стабильность CI/CD. Зафиксированные версии зависимостей способствуют стабильным сборкам и тестам в CI-процессах.
|
|||
|
|
4. Рекомендации Dart. Dart рекомендует хранить pubspec.lock в репозитории для приложений, чтобы обеспечить стабильность окружения. (См. документацию.)
|
|||
|
|
|
|||
|
|
#### Аргументы против хранения pubspec.lock
|
|||
|
|
|
|||
|
|
1. Частые изменения. pubspec.lock обновляется при каждом изменении зависимостей, что увеличивает количество коммитов и PR, связанных только с обновлением зависимостей.
|
|||
|
|
|
|||
|
|
### Рекомендации:
|
|||
|
|
|
|||
|
|
1. ХРАНИТЬ pubspec.lock для ПРИЛОЖЕНИЙ.
|
|||
|
|
2. НЕ ХРАНИТЬ pubspec.lock ДЛЯ ПАКЕТОВ.
|
|||
|
|
3. Решение для переключаемых зависимостей (GMS/HMS).
|
|||
|
|
При изменении зависимостей, таких как GMS/HMS, может возникать несовместимость версий. Flutter пока не поддерживает флаворы на уровне зависимостей pubspec (см. [Flutter issue #46979](https://github.com/flutter/flutter/issues/46979)),
|
|||
|
|
поэтому рекомендуем хранить по дефолту GMS pubspec.lock как базовый.
|