출시·고도화 중
Framework · 2022년 공개
Tauri는 Rust 코어와 운영체제의 WebView로 작고 안전한 데스크톱 · 모바일 앱을 만드는 프레임워크로, 화면은 익숙한 웹 기술로 작성합니다.
Tauri는 HTML · CSS · JavaScript로 만든 화면과 Rust로 작성한 코어를 묶어 Windows, macOS, Linux, Android, iOS용 앱을 만드는 오픈 소스 프레임워크입니다. 2022년에 첫 안정판이 나왔고, 지금은 데스크톱과 모바일을 함께 지원합니다. 브라우저 엔진을 앱에 넣지 않고 운영체제가 제공하는 WebView(Windows의 WebView2, macOS의 WKWebView, Linux의 WebKitGTK 등)를 쓰기 때문에 설치 파일이 작고 메모리 사용량도 적은 편입니다.
Tauri는 웹 개발 경험을 살려 데스크톱 앱을 만들고 싶지만 앱 크기와 보안이 신경 쓰일 때 잘 맞습니다. React, Vue, Svelte, Angular처럼 정적 파일로 빌드되는 프런트엔드라면 무엇이든 쓸 수 있고, 파일 시스템이나 시스템 트레이처럼 운영체제와 맞닿는 일은 Rust 명령과 공식 플러그인이 맡습니다. WebView 안의 코드가 쓸 수 있는 기능은 capability와 permission으로 창마다 명시적으로 허용해야 하므로, 꼭 필요한 권한만 여는 구조를 자연스럽게 갖추게 됩니다.
처음 시작한다면 Rust와 운영체제별 WebView 개발 라이브러리를 설치한 뒤 create-tauri-app으로 프로젝트를 만들고 개발 모드로 실행해 보세요. Rust를 깊이 몰라도 템플릿의 greet 명령을 고쳐 보는 것부터 시작할 수 있으며, 공식 문서가 명령, 이벤트, 보안 모델, 배포를 차례로 설명합니다. 아래 안내서도 같은 순서로 핵심을 정리합니다.
운영체제의 WebView를 쓰고 브라우저 엔진을 함께 묶지 않아, 설치 파일 크기와 메모리 사용량이 작게 유지됩니다.
창 관리, 파일 접근, 무거운 계산을 Rust로 처리해 빠르고 메모리 안전한 백엔드를 얻습니다.
capability · permission · scope로 창마다 허용할 명령과 경로를 정하며, 정하지 않은 기능은 기본적으로 막혀 있습니다.
하나의 코드베이스로 Windows, macOS, Linux 데스크톱 앱과 Android · iOS 앱을 만들 수 있습니다.
rustup으로 Rust를 설치합니다. Windows에서는 Microsoft C++ Build Tools와 WebView2, macOS에서는 Xcode Command Line Tools, Linux에서는 WebKitGTK 같은 개발 라이브러리가 필요합니다. 웹 프런트엔드를 쓰려면 Node.js도 설치합니다.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shcreate-tauri-app이 프로젝트 이름, 식별자, 프런트엔드 언어, 패키지 관리자, UI 템플릿을 차례로 묻고 프로젝트를 만들어 줍니다.
npm create tauri-app@latest의존성을 설치하고 개발 모드로 실행합니다. 처음에는 Rust 의존성을 빌드하느라 몇 분 걸릴 수 있으며, 이후에는 프런트엔드 변경이 바로 반영됩니다.
cd tauri-app && npm install && npm run tauri devsrc-tauri/src/lib.rs에는 앱의 Rust 코어가 들어 있습니다. #[tauri::command]를 붙인 greet 함수는 프런트엔드에서 invoke("greet", { name })으로 부를 수 있는 명령이며, generate_handler!로 등록됩니다. run 함수는 앱을 조립해 실행하고, 데스크톱에서는 main.rs가 이 함수를 부릅니다. npm run tauri dev를 실행하면 앱 창이 열립니다.
src-tauri/src/lib.rs
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {name}! You've been greeted from Rust!")
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
npm run tauri dev설치부터 Tauri 의 핵심 개념까지, 여섯 장으로 차근차근 따라 합니다.
Tauri 에 관해 묻고, 경험을 나누고, 의견을 주고받는 곳입니다.
아직 토론이 없습니다. 첫 이야기를 시작해 보세요.
댓글 0개
로그인 · 로그인하면 댓글을 남길 수 있습니다.
첫 댓글을 남겨 보세요.