コマンド実行時に引数(オプションやファイルパスなど)を渡す方法を解説します。
前提条件
プラグインのインストールが必要です。
npm run tauri add shell
Permissions (権限) の設定
src-tauri/capabilities/default.json に以下の権限を追加します。
{
"permissions": [
...,
"shell:allow-execute",
"shell:allow-open",
{
"identifier": "shell:allow-execute",
"allow": [
{
"name": "git",
"cmd": "git",
"args": [
"status",
"--short"
]
},
{
"name": "node",
"cmd": "node",
"args": true
}
]
}
]
}
1. フロントエンドから作成する (TypeScript)
Command.create() の第2引数に配列として渡します。
任意の引数を渡す(args: true の場合)
import { Command } from '@tauri-apps/plugin-shell';
async function runNodeVersion() {
// 第2引数に配列で引数を渡す
// Node.js がインストールされている必要があります
const cmd = Command.create('node', ['--version']);
const output = await cmd.execute();
console.log('Node Version:', output.stdout); // 例: "v18.16.0"
}
固定引数を渡す場合
import { Command } from '@tauri-apps/plugin-shell';
async function gitStatus() {
// permission で args: ["status"] などと固定されている場合
const cmd = Command.create('git', ['status']);
const output = await cmd.execute();
console.log(output.stdout);
}
2. バックエンドから作成する (Rust)
引数を渡す場合は .arg() または .args() を使用します。
use std::process::Command;
#[tauri::command]
fn run_node_version() -> Result<String, String> {
// 複数の引数を配列(スライス)で渡す
let output = Command::new("node")
.args(&["--version"])
.output()
.map_err(|e| e.to_string())?;
let stdout = String::from_utf8_lossy(&output.stdout);
Ok(stdout.to_string())
}
#[tauri::command]
fn git_status() -> Result<String, String> {
// 個別に引数を追加
let output = Command::new("git")
.arg("status")
.arg("--short")
.output()
.map_err(|e| e.to_string())?;
let stdout = String::from_utf8_lossy(&output.stdout);
Ok(stdout.to_string())
}