Interfaz de línea de comandos (CLI)
Tauri permite que tu aplicación tenga una CLI a través de clap, un analizador de argumentos de línea de comandos robusto. Con una definición de CLI simple en tu archivo tauri.conf.json, puedes definir tu interfaz y leer su mapa de coincidencias de argumentos en JavaScript y/o Rust.
This plugin requires a Rust version of at least 1.77.2
| Platform | Level | Notes |
|---|---|---|
| windows | ||
| linux | ||
| macos | ||
| android | | |
| ios | |
- Windows
- Debido a una limitación del sistema operativo, las aplicaciones de producción no pueden escribir texto en la consola de llamada de forma predeterminada. Consulta tauri#8305 para obtener una solución alternativa.
Instala el plugin CLI para comenzar.
Utiliza el administrador de paquetes de tu proyecto para agregar la dependencia:
npm run tauri add cliyarn run tauri add clipnpm tauri add clideno task tauri add clibun tauri add clicargo tauri add cli-
Ejecuta el siguiente comando en la carpeta
src-tauripara agregar el plugin a las dependencias del proyecto enCargo.toml:cargo add tauri-plugin-cli --target 'cfg(any(target_os = "macos", windows, target_os = "linux"))' -
Modifica
lib.rspara inicializar el plugin:src-tauri/src/lib.rs #[cfg_attr(mobile, tauri::mobile_entry_point)]pub fn run() {tauri::Builder::default().setup(|app| {#[cfg(desktop)]app.handle().plugin(tauri_plugin_cli::init());Ok(())}).run(tauri::generate_context!()).expect("error while running tauri application");} -
Instala los enlaces JavaScript Guest utilizando tu administrador de paquetes JavaScript preferido:
npm install @tauri-apps/plugin-cliyarn add @tauri-apps/plugin-clipnpm add @tauri-apps/plugin-clideno add npm:@tauri-apps/plugin-clibun add @tauri-apps/plugin-cli
En tauri.conf.json, tienes la siguiente estructura para configurar la interfaz:
{ "plugins": { "cli": { "description": "Ejemplo de plugin CLI de Tauri", "args": [ { "short": "v", "name": "verbose", "description": "Nivel de verbosidad" } ], "subcommands": { "run": { "description": "Ejecutar la aplicación", "args": [ { "name": "debug", "description": "Ejecutar aplicación en modo de depuración" }, { "name": "release", "description": "Ejecutar aplicación en modo de lanzamiento" } ] } } } }}La matriz args representa la lista de argumentos aceptados por su comando o subcomando.
Un argumento posicional se identifica por su posición en la lista de argumentos. Con la siguiente configuración:
{ "args": [ { "name": "source", "index": 1, "takesValue": true }, { "name": "destination", "index": 2, "takesValue": true } ]}Los usuarios pueden ejecutar tu aplicación como ./app tauri.txt dest.txt y el mapa de coincidencias de argumentos definirá source como "tauri.txt" y destination como "dest.txt".
Un argumento con nombre es un par (clave, valor) donde la clave identifica el valor. Con la siguiente configuración:
{ "args": [ { "name": "type", "short": "t", "takesValue": true, "multiple": true, "possibleValues": ["foo", "bar"] } ]}Los usuarios pueden ejecutar tu aplicación como ./app --type foo bar, ./app -t foo -t bar o ./app --type=foo,bar y el mapa de coincidencias de argumentos definirá type como ["foo", "bar"].
Un argumento de bandera es una clave independiente cuya presencia o ausencia proporciona información a tu aplicación. Con la siguiente configuración:
{ "args": [ { "name": "verbose", "short": "v" } ]}Los usuarios pueden ejecutar tu aplicación como ./app -v -v -v, ./app --verbose --verbose --verbose o ./app -vvv y el mapa de coincidencias de argumentos definirá verbose como true, con occurrences = 3.
Algunas aplicaciones CLI tienen interfaces adicionales como subcomandos. Por ejemplo, la CLI git tiene git branch, git commit y git push. Puedes definir interfaces anidadas adicionales con la matriz subcommands:
{ "cli": { ... "subcommands": { "branch": { "args": [] }, "push": { "args": [] } } }}Su configuración es la misma que la configuración de la aplicación raíz, con description, longDescription, args, etc.
El plugin CLI está disponible tanto en JavaScript como en Rust.
import { getMatches } from '@tauri-apps/plugin-cli';// cuando uses `"withGlobalTauri": true`, puedes usar// const { getMatches } = window.__TAURI__.cli;
const matches = await getMatches();if (matches.subcommand?.name === 'run') { // `./your-app run $ARGS` fue ejecutado const args = matches.subcommand.matches.args; if (args.debug?.value === true) { // `./your-app run --debug` fue ejecutado } if (args.release?.value === true) { // `./your-app run --release` fue ejecutado }}use tauri_plugin_cli::CliExt;
#[cfg_attr(mobile, tauri::mobile_entry_point)]pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_cli::init()) .setup(|app| { match app.cli().matches() { // `matches` aquí es una estructura con { args, subcommand }. // `args` es `HashMap<String, ArgData>` donde `ArgData` es una estructura con { value, occurrences }. // `subcommand` es `Option<Box<SubcommandMatches>>` donde `SubcommandMatches` es una estructura con { name, matches }. Ok(matches) => { println!("{:?}", matches) } Err(_) => {} } Ok(()) }) .run(tauri::generate_context!()) .expect("error while running tauri application");}De forma predeterminada, todos los comandos y ámbitos de plugins potencialmente peligrosos están bloqueados y no se puede acceder a ellos. Debes modificar los permisos en tu configuración de capabilities para habilitarlos.
Consulta la Descripción general de capacidades para obtener más información y la guía paso a paso para usar los permisos de los plugins.
{ "$schema": "../gen/schemas/desktop-schema.json", "identifier": "main-capability", "description": "Capability for the main window", "windows": ["main"], "permissions": ["cli:default"]}Default Permission
Allows reading the CLI matches
This default permission set includes the following:
allow-cli-matches
Permission Table
| Identifier | Description |
|---|---|
|
|
Enables the cli_matches command without any pre-configured scope. |
|
|
Denies the cli_matches command without any pre-configured scope. |
© 2025 Tauri Contributors. CC-BY / MIT