Язык 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
Аргументы и флаги
Часто при разработке требуется передать аргументы в функцию main()
, для этого необходимо передать их при запуске после указания файла:
$ dart run bin/myapp.dart arg1 arg2
Также можно указать дополнительные флаги, например, для отладки приложения:
$ dart run --enable-asserts bin/myapp.dart arg1 arg2
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.