命令行界面 (CLI)
Tauri 通过 clap,一个强大的命令行参数解析器,使您的应用程序能够拥有 CLI。通过 tauri.conf.json
文件中的简单 CLI 定义,您可以帮助定义接口和读取匹配到的参数映射的 JavaScript 和/或 Rust。
支持的平台
本插件需要至少 1.77.2 版本的 Rust
平台 | 级别 | 备注 |
---|---|---|
windows | ||
linux | ||
macos | ||
android | | |
ios | |
- Windows
- 由于操作系统限制,生产应用程序默认无法将文本写回到调用控制台。请查看 tauri#8305 了解解决方案。
设置
要开始,请安装 CLI 插件。
使用您的项目包管理器添加依赖项
npm run tauri add cli
yarn run tauri add cli
pnpm tauri add cli
deno task tauri add cli
bun tauri add cli
cargo 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
,arg 匹配映射将定义 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_matches 命令,无需预先配置的作用域。 |
|
拒绝 cli_matches 命令,无需预先配置的作用域。 |
© 2025 Tauri贡献力量者。CC-BY / MIT