Finch-configuratie in pubspec.yaml

De sectie finch in pubspec.yaml stelt projectinstellingen beschikbaar aan de Finch CLI. Opdrachten zoals finch run, finch serve, finch build, finch migrate --create en finch make:migration gebruiken deze sectie om entrypoints, projectbronnen, het build-uitvoerpad en de map voor nieuwe migraties te vinden.

Deze instellingen verschillen van FinchConfigs. De sectie finch bestuurt het opdrachtregelprogramma, terwijl FinchConfigs instellingen van de draaiende applicatie bevat, zoals de poort, databaseconfiguratie en map voor statische bestanden.

Volledig voorbeeld

# Finch configuration
# See https://pub.dev/packages/finch for more details
# Here you can customize paths and settings for your Finch application
# They will be used by Finch CLI commands to run, build, serve, migrate, etc.
# Adjust these settings as needed for your project structure
finch:
  # Main path of the application
  app: ./lib/app.dart
  # Path of serve file while developing
  serve: ./lib/serve.dart
  # Path of languages files
  languages_path: ./lib/languages
  # Type of languages files
  languages_type: json
  # Path of templates (widgets) files
  widgets_path: ./lib/widgets
  # Type of templates (widgets) files
  widgets_type: j2.html
  # Path of migrations files for different databases
  mysql_migrate:
    path: ./migrations
    type: sql
  # Path of migrations files for different databases
  sqlite_migrate:
    path: ./lib/dart_migration
    type: dart
  build_output: ./build_example
  public_path: ./public

Relatieve paden worden bepaald vanuit de huidige map waarin de opdracht finch wordt uitgevoerd. Voer opdrachten normaal gesproken uit vanuit de projectroot waar pubspec.yaml staat. Bij het maken van ProjectCommands zoekt de CLI ook in deze huidige map naar pubspec.yaml en laadt de sectie finch.

Applicatie-entrypoints

app

Bepaalt het hoofdapplicatiebestand voor deze opdracht:

finch run

In het bovenstaande voorbeeld voert de CLI dart run uit voor ./lib/app.dart. Als --path of -p wordt meegegeven, wordt die opdrachtregelwaarde gebruikt in plaats van app:

finch run --path ./lib/another_app.dart

Als app niet is ingesteld, zoekt de CLI in gebruikelijke mappen zoals bin, lib en src naar namen zoals app.dart en server.dart. Als geen bestand wordt gevonden, vraagt de CLI de gebruiker om een pad.

Opmerking: in de huidige implementatie leest finch build de sleutel app niet rechtstreeks. Gebruik --appPath of -a om het entrypoint voor de build te kiezen. Anders controleert build eerst de oudere interne instelling path en gebruikt daarna ./lib/app.dart als fallback.

serve

Bepaalt het entrypoint voor de ontwikkelomgeving voor deze opdracht:

finch serve

Naast het uitvoeren van het gekozen bestand activeert deze opdracht de Dart VM Service, zodat de ontwikkel- en reloadworkflow beschikbaar is. De optie --path of -p heeft voorrang op serve:

finch serve --path ./lib/watcher.dart

Het ingestelde bestand moet in het project bestaan en een geschikt applicatie-entrypoint bieden.

Taalbestanden

languages_path

Bepaalt de map met vertaalbestanden. Als deze sleutel ontbreekt, gebruikt de CLI standaard ./lib/languages.

De opdracht finch build kopieert deze map naar lib/languages in de build-uitvoer. De optie --langPath of -l overschrijft deze instelling voor de huidige build:

finch build --langPath ./lib/languages

Als het pad leeg is of de map niet bestaat, wordt het kopiëren van taalbestanden overgeslagen.

languages_type

Bepaalt de extensie van vertaalbestanden zonder voorafgaande punt. Gebruik json voor bestanden zoals fa.json en en.json.

Wanneer de interne build van de applicatie vertalingen naar Dart moet omzetten, leest LanguageToDart alleen bestanden met deze extensie en genereert het language_dart.g.dart in languages_path. De standaardwaarde is json.

Sjablonen

widgets_path

Bepaalt de map met Jinja-sjablonen. Als deze sleutel ontbreekt, gebruikt de CLI standaard ./lib/widgets.

De opdracht finch build kopieert deze map naar lib/widgets in de build-uitvoer. De optie --widgetPath of -w heeft voor de huidige build voorrang:

finch build --widgetPath ./lib/widgets

Als het pad leeg is of de map niet bestaat, wordt het kopiëren van sjablonen overgeslagen.

widgets_type

Bepaalt de sjabloonextensie zonder voorafgaande punt. Voor bestanden zoals home.j2.html is j2.html de juiste waarde.

Wanneer de interne build van de applicatie sjablonen naar Dart omzet, converteert WidgetToDart bestanden met deze extensie naar de sjabloonmap en maakt het widget_dart.g.dart in widgets_path. De CLI-standaard voor deze conversie is html.

Databasemigraties

mysql_migrate

Bevat de instellingen voor het maken van MySQL-migraties:

mysql_migrate:
  path: ./migrations
  type: sql
  • path: Map waarin een nieuw migratiebestand wordt gemaakt.
  • type: Bestandsextensie en type migratiesjabloon, meestal sql.

Deze waarden worden gelezen door finch migrate --create en finch make:migration:

finch migrate --create --name create_users
finch make:migration --name create_users

De gegenereerde bestandsnaam bevat een timestamp, de migratienaam en de ingestelde extensie. De optie --path of -p van finch make:migration kan de map voor die aanroep overschrijven.

sqlite_migrate

Bevat de instellingen voor het maken van SQLite-migraties:

sqlite_migrate:
  path: ./lib/dart_migration
  type: dart

Wanneer --sqlite of -s wordt meegegeven, leest de CLI deze sectie in plaats van de MySQL-instellingen:

finch make:migration --sqlite --name create_books
finch migrate --create --sqlite --name create_books

In het voorbeeldproject maakt het type dart een Dart-migratie in ./lib/dart_migration. Deze sectie bepaalt waar de CLI een nieuw bestand maakt. De paden waarmee geregistreerde migraties tijdens runtime worden uitgevoerd, komen uit de applicatieconfiguratie en migratieregistratie in FinchApp.

Build-uitvoer

build_output

Bepaalt de standaard uitvoermap voor finch build:

build_output: ./build_example

De build-uitvoer bevat het uitvoerbare bestand in lib/app.exe en, wanneer aanwezig, kopieën van publieke bestanden, taalbestanden en sjablonen. De optie --output of -o heeft voorrang:

finch build --appPath ./lib/app.dart --output ./release

Als de in build_output ingestelde map al bestaat, verwijdert de CLI deze en maakt de map opnieuw voor de nieuwe build. Als met --output een bestaand aangepast pad wordt opgegeven, stopt de build om overschrijven te voorkomen.

Als deze sleutel ontbreekt, is de standaardwaarde ./finch_build.

Publieke bestanden

public_path

Bepaalt tijdens de build de bronmap voor publieke bestanden zoals CSS, JavaScript, afbeeldingen en lettertypen:

public_path: ./public

Als deze map bestaat, kopieert finch build deze naar de map public in de build-uitvoer. De optie --publicPath of -p van de build-opdracht heeft voorrang:

finch build --publicPath ./public

Als deze sleutel ontbreekt, is de standaardwaarde ./public. Deze instelling bepaalt alleen welke bron tijdens de build wordt gekopieerd. De map die de draaiende applicatie serveert, moet nog steeds via FinchConfigs.publicDir worden ingesteld.

Prioriteit van instellingen

Wanneer een CLI-opdracht een overeenkomstige optie biedt, kiest Finch de waarde in deze volgorde:

  1. De optie die op de opdrachtregel is meegegeven
  2. De waarde in de sectie finch van pubspec.yaml
  3. De interne standaardwaarde van Finch CLI

In de volgende opdracht vervangt --output bijvoorbeeld build_output, terwijl --appPath het entrypoint voor de build kiest:

finch build \
  --appPath ./lib/app.dart \
  --output ./release \
  --publicPath ./public \
  --langPath ./lib/languages \
  --widgetPath ./lib/widgets

Bewaar vaste projectpaden in pubspec.yaml en gebruik opdrachtregelopties voor tijdelijke uitvoeringen met andere paden.