Ранее мы уже говорили о том, как Flutter переходит на использование единого репозитория (monorepo) и поддерживает работу с рабочими пространствами (workspaces). Начиная с версии Dart 3.6, система управления зависимостями Pub теперь официально поддерживает возможность использования shared resolution между пакетами в рамках одного monorepo или workspace.
Функционал pub workspaces гарантирует, что все пакеты внутри monorepo будут использовать согласованное множество зависимостей, что позволяет легче решать конфликты зависимостей при работе с группой связанных пакетов.
Monorepo (mono-repository) — это метод управления проектами, при котором несколько проектов хранятся в одном репозитории. В рамках monorepo все проекты имеют доступ ко всему набору кода, компонентам, библиотекам и внутренним зависимостям, содержащимся в этом едином репозитории.
Кроме того, анализатор Flutter теперь может обрабатывать все пакеты внутри pub workspace в рамках одного аналитического контекста, а не создавать отдельный контекст для каждого пакета, как это было ранее.Для больших репозиториев, особенно из-за структуры monorepo, анализатор во время работы вынужден загружать множество повторяющихся аналитических контекстов для каждого пакета и всех его зависимостей, что приводит к созданию множества копий каждого пакета в оперативной памяти, что вызывает проблемы с использованием памяти. Использование рабочего пространства значительно снижает потребление памяти сервером языка Dart, тем самым повышая производительность среды разработки.Чтобы определить pub workspace, необходимо добавить поле workspace
в корневой файл pubspec.yaml
и указать связанные пакеты:
name: _
publish_to: none
environment:
sdk: ^3.6.0
workspace:
- packages/helper
- packages/client_package
- packages/server_package
Затем выполните команду pub get
, чтобы завершить маппинг и управление оставшимися файлами в любом месте репозитория. Чтобы использовать pub workspace, все пакеты в рабочем пространстве (но не зависимости) должны иметь ограничение версии SDK ^3.6.0
или выше:
environment:
sdk: ^3.6.0
resolution: workspace
Если любые пакеты в рабочем пространстве зависят друг от друга, они автоматически будут распознаны как пакеты из этого рабочего пространства независимо от источника.
Кроме того, можно также использовать файл pubspec_overrides.yaml
рядом с файлом pubspec.yaml
для перекрытия зависимостей.
Дополнительно см.: https://juejin.cn/post/7433673239426007078 / https://dart.dev/tools/pub/workspaces
# Разделители цифр
Dart 3.6 теперь позволяет использовать подчеркивание (_) в качестве разделителя цифр, что помогает сделать длинные цифровые литералы более читаемыми. Например, несколько последовательных подчеркиваний могут указывать на более высокий уровень группировки:
1__000_000__000_000__000_000
0x4000_0000_0000_0000
0.000_000_000_01
0x00_14_22_01_23_45
При этом аналогичная функциональность будет доступна в Dart 3.7, где использование подчеркивания (_) в локальных переменных и параметрах является независимым, поэтому можно объявлять их произвольное количество раз в одном и том же диапазоне без конфликтов.
Ссылка: https://medium.com/dartlang/announcing-dart-3-6-778dd7a80983
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )