命令行界面 (CLI)
Tauri 通过强大的命令行参数解析器 clap 使您的应用程序能够拥有 CLI。您只需在 tauri.conf.json 文件中定义一个简单的 CLI 结构,即可定义您的接口,并在 JavaScript 和/或 Rust 中读取其参数匹配映射。
此插件需要 Rust 版本至少为 **1.77.2**
| 平台 | 级别 | 备注 |
|---|---|---|
| Windows | ||
| Linux | ||
| macOS | ||
| Android | | |
| iOS | |
- Windows
- 由于操作系统限制,生产应用默认无法将文本写回调用控制台。请查看 tauri#8305 以获取解决方法。
安装 CLI 插件以开始使用。
使用你的项目包管理器添加依赖项
npm run tauri add cliyarn run tauri add clipnpm tauri add clideno task tauri add clibun tauri add clicargo tauri add cli-
在
src-tauri文件夹中运行以下命令,将插件添加到项目的Cargo.toml依赖项中cargo add tauri-plugin-cli --target 'cfg(any(target_os = "macos", windows, target_os = "linux"))'- 修改
lib.rs以初始化插件
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");}- 使用您首选的 JavaScript 包管理器安装 JavaScript 访客绑定
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 - 修改
在 tauri.conf.json 中,您可以使用以下结构来配置接口:
{ "plugins": { "cli": { "description": "Tauri CLI Plugin Example", "args": [ { "short": "v", "name": "verbose", "description": "Verbosity level" } ], "subcommands": { "run": { "description": "Run the application", "args": [ { "name": "debug", "description": "Run application in debug mode" }, { "name": "release", "description": "Run application in release mode" } ] } } } }}args 数组表示其命令或子命令接受的参数列表。
位置参数通过其在参数列表中的位置来标识。使用以下配置:
{ "args": [ { "name": "source", "index": 1, "takesValue": true }, { "name": "destination", "index": 2, "takesValue": true } ]}用户可以运行您的应用程序,例如 ./app tauri.txt dest.txt,参数匹配映射将把 source 定义为 "tauri.txt",把 destination 定义为 "dest.txt"。
命名参数是 (键, 值) 对,其中键标识值。使用以下配置:
{ "args": [ { "name": "type", "short": "t", "takesValue": true, "multiple": true, "possibleValues": ["foo", "bar"] } ]}用户可以运行您的应用程序,例如 ./app --type foo bar、./app -t foo -t bar 或 ./app --type=foo,bar,参数匹配映射将把 type 定义为 ["foo", "bar"]。
标志参数是一个独立的键,其存在或缺失向应用程序提供信息。使用以下配置:
{ "args": [ { "name": "verbose", "short": "v" } ]}用户可以运行您的应用程序,例如 ./app -v -v -v、./app --verbose --verbose --verbose 或 ./app -vvv,参数匹配映射将把 verbose 定义为 true,occurrences = 3。
某些 CLI 应用程序具有作为子命令的附加接口。例如,git CLI 具有 git branch、git commit 和 git push。您可以使用 subcommands 数组定义额外的嵌套接口:
{ "cli": { ... "subcommands": { "branch": { "args": [] }, "push": { "args": [] } } }}其配置与根应用程序配置相同,包括 description、longDescription、args 等。
CLI 插件在 JavaScript 和 Rust 中均可用。
import { getMatches } from '@tauri-apps/plugin-cli';// when using `"withGlobalTauri": true`, you may use// const { getMatches } = window.__TAURI__.cli;
const matches = await getMatches();if (matches.subcommand?.name === 'run') { // `./your-app run $ARGS` was executed const args = matches.subcommand.matches.args; if (args.debug?.value === true) { // `./your-app run --debug` was executed } if (args.release?.value === true) { // `./your-app run --release` was executed }}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` here is a Struct with { args, subcommand }. // `args` is `HashMap<String, ArgData>` where `ArgData` is a struct with { value, occurrences }. // `subcommand` is `Option<Box<SubcommandMatches>>` where `SubcommandMatches` is a struct with { name, matches }. Ok(matches) => { println!("{:?}", matches) } Err(_) => {} } Ok(()) }) .run(tauri::generate_context!()) .expect("error while running tauri application");}默认情况下,所有潜在危险的插件命令和范围都被阻止,无法访问。您必须修改 capabilities 配置中的权限才能启用这些功能。
有关更多信息,请参阅功能概述,并参阅分步指南以使用插件权限。
{ "$schema": "../gen/schemas/desktop-schema.json", "identifier": "main-capability", "description": "Capability for the main window", "windows": ["main"], "permissions": ["cli:default"]}默认权限
允许读取 CLI 匹配项
此默认权限集包括以下内容
allow-cli-matches
权限表
| 标识符 | 描述 |
|---|---|
|
|
cli:allow-cli-matches |
|
|
cli:deny-cli-matches |
© 2025 Tauri 贡献者。CC-BY / MIT