dart compile
Herramienta de línea de comandos para compilar código fuente de Dart.
Esta guía describe cómo usar el comando dart compile
para compilar un programa de Dart para una plataforma de destino.
Descripción general
#Usa el comando dart compile para compilar
un programa de Dart para una plataforma de destino.
La salida —que especificas usando un subcomando— puede
incluir un Dart runtime o ser un módulo
(también conocido como snapshot).
Aquí tienes un ejemplo del uso del subcomando exe
para producir un archivo ejecutable autónomo (myapp.exe):
dart compile exe bin/myapp.dart
Generated: /Users/me/myapp/bin/myapp.exe
El siguiente ejemplo usa el subcomando aot-snapshot para
producir un módulo compilado ahead-of-time (AOT) (myapp.aot).
Luego usa el comando dartaotruntime
(el cual proporciona un Dart runtime)
para ejecutar el módulo AOT:
dart compile aot-snapshot bin/myapp.dart
Generated: /Users/me/myapp/bin/myapp.aot
dartaotruntime bin/myapp.aot
Para especificar la ruta al archivo de salida,
usa la opción -o o --output:
dart compile exe bin/myapp.dart -o bin/runme
Para obtener más opciones e información de uso,
ejecuta dart compile [<subcomando>] --help:
dart compile exe --help
Consulta el ejemplo native_app para ver un ejemplo sencillo de cómo usar
dart compile
para compilar una aplicación nativa,
seguido de ejemplos de cómo ejecutarla.
Subcomandos
#La siguiente tabla muestra los subcomandos de dart compile.
| Subcomando | Salida | Más información |
|---|---|---|
exe |
Ejecutable autónomo | Un archivo ejecutable autónomo y específico de la arquitectura que contiene el código fuente
compilado a código de máquina y un pequeño Dart runtime.
Aprende más. |
aot-snapshot |
Módulo AOT | Un archivo específico de la arquitectura que contiene el código fuente
compilado a código de máquina, pero sin Dart runtime.
Aprende más. |
jit-snapshot |
Módulo JIT | Un archivo específico de la arquitectura con
una representación intermedia de todo el código fuente,
más una representación optimizada del código fuente
que se ejecutó durante una ejecución de entrenamiento (training run) del programa.
El código compilado por JIT puede tener un rendimiento pico más rápido que el código AOT
si los datos de entrenamiento son buenos.
Aprende más. |
kernel |
Módulo Kernel | Una representación intermedia portátil
del código fuente.
Aprende más. |
js |
JavaScript | Un archivo JavaScript desplegable,
compilado a partir del código fuente.
Aprende más. |
wasm |
WebAssembly | Un formato de instrucción binaria portátil para una máquina virtual basada en pila.
Actualmente en desarrollo.
Aprende más. |
Tipos de salida
#Las siguientes secciones contienen detalles sobre cada tipo de salida
que dart compile puede producir.
Ejecutables autónomos (exe)
#El subcomando exe produce un ejecutable autónomo para
Windows, macOS o Linux.
Un ejecutable autónomo es código de máquina nativo que se compila a partir del
archivo Dart especificado y sus dependencias,
además de un pequeño Dart runtime que maneja
la comprobación de tipos y la recolección de basura.
Puedes distribuir y ejecutar el archivo de salida como lo harías con cualquier otro archivo ejecutable.
Compila tu aplicación y establece el archivo de salida:
dart compile exe bin/myapp.dart -o /tmp/myapp
Cuando tiene éxito, este comando genera lo siguiente:
Generated: /tmp/myapp
Ejecuta tu aplicación compilada desde el directorio /tmp:
./tmp/myapp
Compilación cruzada
#La siguiente tabla muestra qué sistemas operativos host de 64 bits admiten la compilación cruzada para qué objetivos:
| SO host de 64 bits | Linux ARM | Linux ARM64 | Linux RISCV64 | Linux x64 |
|---|---|---|---|---|
| Linux | hecho | hecho | hecho | hecho |
| macOS | hecho | hecho | hecho | hecho |
| Windows | hecho | hecho | hecho | hecho |
Para usar la compilación cruzada, incluye las siguientes banderas:
--target-os=linux-
El sistema operativo de destino para el ejecutable compilado. Solo el sistema operativo Linux es compatible en este momento.
--target-arch=value-
La arquitectura de destino para el ejecutable compilado. El valor para esta bandera puede ser:
arm: Procesador ARM de 32 bitsarm64: Procesador ARM de 64 bitsriscv64: Procesador RISC-V de 64 bits (RV64GC)x64: Procesador x86-64
El siguiente comando demuestra cómo compilar de forma cruzada (cross-compile) un ejecutable autónomo para un sistema Linux de 64 bits:
dart compile exe \
--target-os=linux \
--target-arch=x64 \
hello.dart
Internamente, este comando descarga binarios adicionales de Dart SDK y
los almacena en caché en el directorio ~/.dart.
Aquí tienes un ejemplo de salida con la bandera --verbose especificada en
el comando:
Downloading https://storage.googleapis.com/dart-archive/channels/dev/signed/hash/...4864.../sdk/gen_snapshot_macos_arm64_linux_x64...
Downloading https://storage.googleapis.com/dart-archive/channels/dev/raw/hash/...64e44.../sdk/dartaotruntime_linux_x64...
Specializing Platform getters for target OS linux.
Generating AOT kernel dill.
Compiling /tmp/hello.dart to /tmp/hello.exe using format Kind.exe:
Generating AOT snapshot. path/to/dir/.dart/3.8.0-265.0.dev/gen_snapshot_macos_arm64_linux_x64 []
Generating executable.
Marking binary executable.
Generated: /tmp/hello.exe
Firma
#Los ejecutables creados con dart compile exe
admiten firma en macOS y Windows.
Para obtener más información sobre la firma de código específica de la plataforma, consulta la documentación de la plataforma para esos sistemas operativos:
- Documentación de
SignTool.exede Windows - Guía de firma de código de Apple
Limitaciones conocidas
#El subcomando exe tiene las siguientes limitaciones conocidas:
-
Sin soporte para
dart:mirrorsydart:developer. Para obtener una lista completa de las bibliotecas principales que puedes usar, consulta las tablas de bibliotecas Multiplataforma y Plataforma nativa. -
La compilación cruzada está soportada, pero el SO de destino está limitado a Linux. Para obtener más información, consulta Compilación cruzada.
Módulos AOT (aot-snapshot)
#Usa módulos AOT para reducir los requisitos de espacio en disco al distribuir
múltiples aplicaciones de línea de comandos. El subcomando aot-snapshot produce un
archivo de salida específico de la arquitectura actual en la que compilas
tu aplicación.
Por ejemplo, si usas macOS para crear un archivo .aot,
ese archivo solo se podrá ejecutar en macOS.
Dart admite módulos AOT en Windows, macOS y Linux.
Compila tu aplicación y establece el archivo de salida:
dart compile aot-snapshot bin/myapp.dart
Cuando tiene éxito, este comando genera lo siguiente:
Generated: /Users/me/myapp/bin/myapp.aot
Ejecuta tu aplicación compilada desde el directorio /bin:
dartaotruntime bin/myapp.aot
Para obtener más información, consulta la
documentación de dartaotruntime.
Compilación cruzada
#El soporte de compilación cruzada para el subcomando aot-snapshot
es el mismo que está disponible para el subcomando exe.
Para obtener más información, consulta
Ejecutables autónomos (exe).
Limitaciones conocidas
#El subcomando aot-snapshot tiene las mismas limitaciones
que el subcomando exe. Para obtener más información, consulta
Ejecutables autónomos (exe)
Módulos JIT (jit-snapshot)
#Los módulos JIT incluyen todas las clases analizadas (parsed) y el código compilado que se genera durante una ejecución de entrenamiento (training run) de un programa.
dart compile jit-snapshot bin/myapp.dart
Compiling bin/myapp.dart to jit-snapshot file bin/myapp.jit.
Hello world!
dart run bin/myapp.jit
Hello world!
Al ejecutar desde un módulo de aplicación, la Dart VM no necesita analizar ni compilar las clases y funciones que ya se usaron durante la ejecución de entrenamiento, por lo que la VM comienza a ejecutar el código de usuario más rápido.
Estos módulos son específicos de la arquitectura,
a diferencia de los módulos producidos utilizando el
subcomando kernel.
Módulos portátiles (kernel)
#Usa el subcomando kernel para empaquetar una aplicación en un
solo archivo portátil que se pueda ejecutar en todos los sistemas operativos y
arquitecturas de CPU.
Un módulo kernel contiene una forma binaria del árbol de sintaxis abstracta
(Kernel AST) para un programa Dart.
Aquí tienes un ejemplo de creación y ejecución de un módulo kernel:
dart compile kernel bin/myapp.dart
Compiling bin/myapp.dart to kernel file bin/myapp.dill.
dart run bin/myapp.dill
Aunque los módulos kernel tienen un tiempo de inicio reducido en comparación con el código Dart, pueden tener un inicio mucho más lento que los formatos de salida AOT específicos de la arquitectura.
JavaScript (js)
#El subcomando js compila código Dart a JavaScript desplegable.
Opciones
#El comando dart compile js tiene múltiples opciones
para personalizar la compilación de código JavaScript.
Opciones básicas
Las opciones comunes incluyen:
-o <file>o--output=<file>-
Genera la salida en
<file>. Si no se especifica, la salida va a un archivo llamadoout.js. --enable-assertsHabilita la verificación de aserciones.
-O{0|1|2|3|4}-
Controla las optimizaciones para reducir el tamaño del archivo y mejorar el rendimiento del código. Para obtener más información sobre estas optimizaciones, ejecuta
dart compile js -hv.-O0: Deshabilita muchas optimizaciones.-O1: Habilita las optimizaciones por defecto.-
-O2: Habilita las optimizaciones de-O1, más otras adicionales (como la minimización) que respetan la semántica del lenguaje y son seguras para todos los programas. -
-O3: Habilita las optimizaciones de-O2, además omite las comprobaciones de tipo implícitas. -
-O4: Habilita optimizaciones más agresivas que-O3, pero con las mismas suposiciones.
--no-source-mapsNo generar un archivo de mapa de fuentes (source map).
-ho--helpMuestra la ayuda. Para obtener información sobre todas las opciones, usa
-hv.
Opciones de ruta y entorno
Algunas otras opciones útiles incluyen:
--packages=<path>-
Especifica la ruta al archivo de configuración de resolución de paquetes. Para obtener más información, consulta la especificación del archivo de configuración de paquetes de Dart.
-D<flag>=<value>-
Define un par de declaración de entorno y valor al cual se puede acceder con
String.fromEnvironment,int.fromEnvironment,bool.fromEnvironment, obool.hasEnvironment. Para obtener más información sobre las declaraciones de entorno, consulta Configurar aplicaciones con declaraciones de entorno de compilación. --versionMuestra información de la versión de
dart.
Opciones de visualización
Las siguientes opciones te ayudan a controlar la salida del compilador.
--suppress-warningsNo muestra advertencias.
--suppress-hintsNo muestra sugerencias.
--terse-
Emite diagnósticos, sin sugerir cómo deshacerse de los problemas diagnosticados.
-vo--verboseMuestra mucha información.
Opciones de análisis
Las siguientes opciones controlan el análisis realizado en el código Dart.
--fatal-warningsTratar las advertencias como errores de compilación.
--enable-diagnostic-colorsAgrega colores a los mensajes de diagnóstico.
--show-package-warningsMuestra advertencias y sugerencias generadas a partir de paquetes.
--csp-
Deshabilita la generación dinámica de código en la salida generada. Esto es necesario para satisfacer las restricciones de CSP (consulta W3C Content Security Policy.)
--dump-info-
Genera un archivo (con el sufijo
.info.json) que contiene información sobre el código generado. Puedes inspeccionar el archivo generado con herramientas en dart2js_info.
Ejemplo de compilación de aplicación web
#Por ejemplo, para compilar una aplicación de Dart a JavaScript optimizado, ejecuta el siguiente comando:
dart compile js -O2 -o out/main.js web/main.dart
Mejorar la compilación web de producción
#Sigue estas prácticas para mejorar la inferencia de tipos, reducir el tamaño del archivo y mejorar el rendimiento de JavaScript:
- No uses
Function.apply(). - No sobrescribas
noSuchMethod(). - Evita establecer variables a
null. - Sé consistente con los tipos de argumentos que pasas a cada función o método.
Para obtener más información sobre la creación y el despliegue de aplicaciones de JavaScript, consulta Despliegue web.
A menos que se indique lo contrario, la documentación en este sitio refleja Dart 3.12.2. Página actualizada por última vez el 04-02-2026. Ver fuente oreportar un problema.