Почему flutter `pub get` изменяет pubspec.lock?

#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 документы кажутся вводящими в заблуждение, если не ошибаются.