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 buildde sleutelappniet rechtstreeks. Gebruik--appPathof-aom het entrypoint voor de build te kiezen. Anders controleert build eerst de oudere interne instellingpathen gebruikt daarna./lib/app.dartals 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, meestalsql.
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:
- De optie die op de opdrachtregel is meegegeven
- De waarde in de sectie
finchvanpubspec.yaml - 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.