It’s #FrontendFriday – Build Skripte ausführen in Flutter™️
Es ist wieder #FrontendFriday! Schreibst du gerne Skripte für Npm, Gradle, Cargo & Co. um dir den Entwicklungsprozess zu vereinfachen und möchtest das Ganze auch in Flutter umsetzen? Dann könnte dieser Beitrag einen nützlichen Tipp für dich bereithalten.
Build-, Validierungs- und andere Custom-Skripte befinden sich meist in einer zentralen Konfigurationsdatei. Im Fall von Flutter ist das die Datei pubspec.yaml. Das Problem hierbei ist, dass das Framework von Haus aus keine Möglichkeit bietet eigene Skripte auszuführen. Glücklicherweise stellt die Flutter Community gleich mehrere Packages zur Lösung bereit. Eines dieser Packages ist derry.
Installation
Voraussetzung für die Installation von derry ist eine eingerichtete und funktionsfähige Flutter SDK. Anschließend lässt sich das Package (siehe pub.dev) über folgenden Befehl installieren:
dart pub global activate derry
Setup & Nutzung
Nach der Installation von derry gibt es 2 Möglichkeiten Skripte für Flutter zu schreiben.
- direkt in der pubspec.yaml Datei
- ausgelagert in eine separate Datei
Gerade bei einem Projekt mit mehreren Skripten, bietet es sich an, diese in eine eigene Datei auszulagern. Dadurch bleibt der Umfang der Konfigurationsdatei geringer und die Skripte sind schneller zu finden.
Der folgende Screenshot zeigt beispielhaft die Verzeichnisstruktur eines Flutter-Projekts. In Rot markiert sind einerseits die Konfigurationsdatei pubspec.yaml und eine zweite Yaml-Datei für Skripte – in diesem Fall derry.yaml genannt.
Der folgende Codeausschnitt ist ein Beispiel, wie Flutter Skripte aussehen können und zeigt den Inhalt der Datei derry.yaml:
localization: - dart run easy_localization:generate -S assets/i18n -O lib/common/localization -o locale_keys.g.dart -f json -u true clean_install: - flutter clean - flutter pub get - flutter upgrade -f build_android: - derry clean_install - flutter build apk -t lib/main.dart build_ios: - derry clean_install - flutter build ios build_release: - derry build_android - derry build_ios
Nicht eingerückte Begriffe repräsentieren die Skriptnamen. Die Stichpunkte darunter sind die einzelnen Befehle, die derry nacheinander für den jeweiligen Namen ausführt.
Damit derry die definierten Skripte nutzen kann, muss die Datei in pubspec.yaml referenziert werden:
# ... content of pubspec.yaml scripts: derry.yaml
Anstelle des Dateinamens (hier derry.yaml) könnte man, alternativ zur separaten Datei, die einzelnen Skripte direkt einfügen:
# ... content of pubspec.yaml scripts: clean_install: - flutter clean - flutter pub get - flutter upgrade -f
Mit diesem Setup kann man die Skripte nach der Syntax derry <script_name>
ausführen.
Beispiele:
dart localization dart build_android dart clean_install