Ce face dart compile
dart compile exe creează un executabil de sine stătător pentru sistemul curent (macOS, Linux, Windows): pornește aproape instantaneu și rulează pe calculatoare fără SDK-ul Dart. Este forma potrivită pentru unelte de linie de comandă și servere. Compilarea se face doar pentru sistemul pe care rulezi comanda.
dart compile js transformă programul în JavaScript pentru browser (cu -O2 sau mai mult pentru cod optimizat și mai mic), iar dart compile wasm în WebAssembly. Codul care folosește dart:io nu poate fi compilat pentru web.
Celelalte ținte sunt pentru cazuri speciale: aot-snapshot (cod nativ rulat cu dartaotruntime), jit-snapshot (pornire mai rapidă pe VM) și kernel (format intermediar, portabil).
Parametri
| Parametru | Descriere |
|---|---|
exe | js | wasm | aot-snapshot | jit-snapshot | kernel |
Formatul rezultatului. |
-o, --output |
Fișierul creat. Implicit lângă sursă (ex. bin/main.exe). |
-O0 ... -O4 |
Doar pentru js: nivelul de optimizare. |
-D nume=valoare |
Definește o constantă citită cu String.fromEnvironment. |
Exemple
Exemplul 1: Un executabil nativ
Executabilul are câțiva MB (conține și runtime-ul Dart) și se poate copia pe alt calculator cu același sistem de operare.
dart compile exe bin/magazin.dart -o build/magazin
ls -lh build/magazin
./build/magazin Mihai
Rezultat în terminal
Generated: /Users/ana/proiecte/magazin/build/magazin
-rwxr-xr-x 1 ana staff 5,4M 19 oct 22:10 build/magazin
Bun venit în magazin, Mihai!
Total coș: 43.75 lei
Exemplul 2: Compilare în JavaScript
Se creează fișierul .js, plus o hartă a sursei (.js.map) pentru depanare în browser.
dart compile js -O2 -o build/magazin.js bin/magazin.dart
Rezultat în terminal
Compiled 10,747,659 input bytes (5,318,399 characters source) to 34,059 characters JavaScript in 0.41 seconds
Exemplul 3: Constante la compilare cu -D
Valoarea lui MEDIU este fixată în executabil la compilare. Rulat fără -D, programul ar folosi valoarea implicită „dezvoltare”.
// bin/server.dart
void main() {
const mediu = String.fromEnvironment('MEDIU', defaultValue: 'dezvoltare');
print('Pornesc serverul în mediul: $mediu');
}
// în terminal:
// dart compile exe -D MEDIU=productie bin/server.dart -o build/server
// ./build/server
Rezultat în terminal
Generated: /Users/ana/proiecte/magazin/build/server
Pornesc serverul în mediul: productie
Greșeli frecvente
- Să compilezi pe macOS și să copiezi executabilul pe un server Linux: nu merge. Compilează pe sistemul țintă (de exemplu în Docker sau CI).
dart compile jspentru cod care importădart:io: eroare, biblioteca nu există în browser.- Să folosești
dart runîn producție pentru o unealtă pornită des: fiecare pornire compilează din nou; executabilul pornește mult mai repede.
Comenzi înrudite
dart run: Rulează un program Dart: un fișier, programul principal al proiectului sau un executabil dintr-un pachet.external: Declară o funcție sau un câmp al cărui corp este scris în altă parte: în C (dart:ffi), JavaScript sau în SDK.deferred: Import amânat: biblioteca se încarcă abia când apelezi loadLibrary(), util pe web pentru a micșora încărcarea inițială.dart create: Creează un proiect Dart nou dintr-un șablon: aplicație de consolă, pachet, server sau aplicație web.