#flutter #dart #dart-pub
#flutter #dart #dart-pub
Вопрос:
Когда я выполняю flutter pub get
или pub get
, эти изменения pubspec.lock
иногда похожи на приведенные ниже.
sdks:
- dart: ">=2.10.2 <=2.11.0-213.1.beta"
dart: ">=2.10.2 <2.11.0"
Я думал pub get
, что это почти равно команде CocoaPods pod install
, которая не изменяет файл блокировки.
Зачем pub get
обновлять файл блокировки?
Ответ №1:
ссылка на официальную документацию здесь
это ответ :
Когда pub get получает новые зависимости, он записывает файл блокировки, чтобы гарантировать, что будущие get будут использовать те же версии этих зависимостей. Пакеты приложений должны проверять файл блокировки в системе управления версиями; это гарантирует, что приложение будет использовать одинаковые версии всех зависимостей для всех разработчиков и при развертывании в рабочей среде. Однако пакеты библиотеки не должны проверять файл блокировки, поскольку ожидается, что они будут работать с различными версиями зависимостей.
Если файл блокировки уже существует, pub get использует версии зависимостей, заблокированных в нем, если это возможно. Если зависимость не заблокирована, pub получает последнюю версию этой зависимости, которая удовлетворяет всем ограничениям версии.
Комментарии:
1. Я могу подтвердить, что говорит OP; что (по крайней мере, иногда) ‘pub get’ изменяет существующий pubspec.lock. Я создал проект, и в существующем файле блокировки было изменено около 12 версий dep. Приведенные документы подразумевают, что этого не произойдет, верно? В нем говорится: «[существующий файл блокировки] гарантирует, что приложение будет использовать одни и те же версии всех зависимостей …» Если сборка изменяет файл блокировки, то в разных сборках будут использоваться разные dep. IOW документы кажутся вводящими в заблуждение, если не ошибаются.