От Python к Dart — день 2, знакомство с dart CLI

Язык Dart невозможно представить без одноименной утилиты командной строки (CLI). Это полноценный инструмент, который значительно упрощает жизнь разработчика, по своим возможностям значительно превосходя встроенные возможности интерпретатора Python.

Среди возможностей dart — создание проектов, анализ и форматирование исходного кода, публикация пакетов на pub.dev и многое другое.

Следует помнить, что целью данного цикла является не полное погружение в Dart с нуля, а быстрое знакомство для тех, кто уже умеет разрабатывать, в частности, на языке Python.

Создание проектов

Python не имеет встроенных возможностей для автоматического создания проектов, все приходится делать вручную: создавать структуру папок, описывать зависимости в requirements.txt. Конечно, существуют сторонние приложения, которые облегчают этот процесс, например, poetry или Cookiecutter. Однако они являются сторонними и требуют установки в системной или виртуальной среде. В Dart эта функция встроена.

dart create

Итак, dart create — это CLI-утилита, которая поможет вам создать проект из указанного шаблона.

$ dart create project_name
Войти в полноэкранный режим Выйти из полноэкранного режима

По умолчанию это простое консольное приложение, как dart-sass. Однако это еще не все. Используя опцию -t, вы можете указать, какой шаблон использовать для создания, это может быть:

При запуске dart create сначала создаст структуру проекта, а затем попытается загрузить все необходимые библиотеки из pub.dev. Это поведение можно изменить, указав флаг --no-pub при вызове команды.

Аналог из мира Python: poetry new project_name.

Анализ и форматирование

При работе нескольких человек над одним проектом очень часто необходимо использовать единый стиль оформления кода, написания комментариев, использования имен переменных и т.д. В мире Python мы используем линтеры flake8, различные форматеры (black, yapf, autopep8) и mypy для проверки типов. Как Dart может помочь решить эти проблемы?

dart analyze

Утилита позволяет выполнить статический анализ исходного кода и указать на ошибки и недочеты.

По умолчанию вызов выполнит проверку и укажет на ошибки и предупреждения, указывая на необходимость реагирования на уровне info с помощью флага --fatal-infos.

$ dart analyze [<DIRECTORY> | <DART_FILE>]
Вход в полноэкранный режим Выход из полноэкранного режима

Поведение анализатора может быть настроено с помощью конфигурационного файла или комментариев в коде.

формат dart

С помощью этой команды мы можем стилизовать наш исходный код в соответствии с руководством Dart.

$ dart format
Войти в полноэкранный режим Выйти из полноэкранного режима

Эта команда перезапишет файлы, отформатировав их «правильно».

dart fix

$ dart fix
Войти в полноэкранный режим Выйти из полноэкранного режима

Применяет автоматические исправления к файлам исходного кода, исправляя два типа ошибок:

  • Анализ проблем, связанных с автоматическими исправлениями (иногда называемыми быстрыми исправлениями или действиями с кодом))
  • Проблемы, связанные с передачей информации API пакета

Чтобы увидеть изменения, укажите флаг --dry-run; чтобы применить --apply; для этой команды нет поведения по умолчанию.

Сборка / компиляция

запуск dart

Запустить приложение Dart очень просто, достаточно выполнить следующую команду в терминале:

$ dart run bin/myapp.dart
Войти в полноэкранный режим Выйти из полноэкранного режима

Если вы находитесь внутри пакета и в каталоге bin есть файл dart с тем же именем, что и имя пакета, то приложение может быть выполнено без указания файла:

$dart run
Войти в полноэкранный режим Выйти из полноэкранного режима

Также можно запускать приложения из пакетов, указанных в зависимостях к текущему. Например, если ваше приложение имеет зависимость от пакета foo, то для запуска программы из этого пакета достаточно вызвать команду:

$ dart run foo
Войти в полноэкранный режим Выйти из полноэкранного режима

Или укажите другую программу внутри пакета foo:

$ dart run foo:bar
Enter fullscreen mode Выйти из полноэкранного режима

Аргументы и флаги

Часто при разработке требуется передать аргументы в функцию main(), для этого необходимо передать их при запуске после указания файла:

$ dart run bin/myapp.dart arg1 arg2
Войти в полноэкранный режим Выйти из полноэкранного режима

Также можно указать дополнительные флаги, например, для отладки приложения:

$ dart run --enable-asserts bin/myapp.dart arg1 arg2
Enter fullscreen mode Выйти из полноэкранного режима

dart compile

Команда dart compile позволяет скомпилировать программу Dart для целевой платформы. Вывод, который вы указываете с помощью подкоманды, может включать в себя среду выполнения Dart или быть модулем (также известным как снимок).

$ dart compile
Войти в полноэкранный режим Выход из полноэкранного режима

dart test

Каждая программа нуждается в тестировании, это позволит уменьшить количество ошибок при разработке и улучшить качество приложения. Для Python есть отличный фреймворк, который упрощает работу с тестами, их написание и выполнение — Pytest. Запуск тестов с его помощью чрезвычайно прост:

$ pytest
Войдите в полноэкранный режим Выйти из полноэкранного режима

Вывод команды довольно подробный и позволяет понять, где и что пошло не так при выполнении тестов. Вот как это выглядит:

Тестирование в Dart выполняется с помощью команды dart test.

$ dart test
Вход в полноэкранный режим Выход из полноэкранного режима

Несколько флагов, таких как --name (-n), --tags (-t) или --exclude-tags (-x) позволяют вам контролировать, какие тесты будут запускаться. Если указано несколько флагов, то будут выполняться тесты, удовлетворяющие всем условиям сразу.

Управление пакетами

dart pub

В Python есть встроенная утилита pip, которая позволяет легко управлять пакетами, устанавливать, обновлять и удалять их. Для большего контроля существуют также сторонние инструменты, такие как poetry. В Dart также есть инструмент, облегчающий работу с внешними зависимостями — это dart doc.

$ dart pub
Вход в полноэкранный режим Выход из полноэкранного режима

Возможности dart pub гораздо шире, чем установка и удаление пакетов. С его помощью вы можете управлять локальным кэшем пакетов, публиковать пакеты на pub.dev и т.д.

Для примера рассмотрим установку пакета в Python:

$ python3 -m pip install django
Войти в полноэкранный режим Выйти из полноэкранного режима

Эта команда установит актуальную версию пакета Django, но не запишет его как зависимость, что означает, что при новой установке вам нужно будет как-то узнать об этой зависимости.

То же самое можно сделать в Dart следующим образом:

$ dart pub add shelf
Войти в полноэкранный режим Выйти из полноэкранного режима

В этом случае пакет shelf будет добавлен в проект, указан как зависимость в pubspec.yml и загружен в кэш.

Аналоги в Python: pip, poetry.

Документация

dart doc

Важной частью разработки приложений и библиотек является документирование функциональности и исходного кода. И для этого в Dart есть специальная утилита, которую очень легко запустить:

$ dart doc
Войти в полноэкранный режим Выйти из полноэкранного режима

Dart позволяет использовать комментарии и разметку в коде для описания классов, функций, модулей и других структур. Более подробно мы рассмотрим их в отдельной статье, а пока отметим, что Dart обрабатывает специальные комментарии к документам. О том, как сделать документацию максимально эффективной, вы можете прочитать в статье Эффективный Dart.

Аналогами в Python могут быть генератор Sphinx или pdoc, их возможности намного превосходят возможности dart doc.

Заключение

Мы рассмотрели некоторые из команд, доступных с помощью утилиты dart, некоторые из них требуют более глубокого понимания. Однако даже этот беглый взгляд дает представление о ее возможностях и удобстве, доступных «из коробки» для разработчика.

Далее мы начнем погружение в язык Dart и сравним его с Python.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *