C.W.K.
Stream
Lesson 07 of 07 · published

직접 플러그인 쓰기 (맛보기)

~12 min · tauri, plugins, authoring, architecture

Level 0웹 관광객
0 XP0/56 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"대부분의 경우, '이거 플러그인이어야 해?'의 답은 아니오야 — 모듈이어야 해. 더 큰 망치를 꺼내기 전에 차이를 알아."

플러그인을 안 써야 할 때

네 한 앱만 쓰는 기능이면 플러그인일 필요 없어. Rust 모듈(commands.rs, storage.rs)에 두고 command를 평범하게 등록해 — 그게 더 단순하고, 의식이 적고, 건강한 Tauri 코어의 모습 그대로야(Cinder의 쪼갠 모듈이 이거). 플러그인은 패키징 오버헤드를 더해. 돌려받는 게 있을 때만 지불해.

플러그인이 제값 할 때

플러그인을 써, 기능을 여러 앱에 걸쳐 재사용하고 싶을 때, 남들이 쓰게 배포할 때, 또는 통일된 API 뒤에 네이티브 모바일 코드(Swift/Kotlin)를 번들할 때. 플러그인은 Rust command, JS API, permission 정의, 선택적 모바일 네이티브 코드를 설치 가능한 단위 하나로 묶어 — 네가 써온 공식 플러그인이랑 같은 모양이야. '이거 다음 앱에도 넣고 싶어'가 참이 되는 순간, 플러그인이 맞는 컨테이너야.

플러그인의 모양

핵심에서 플러그인은 이름, 자기 command용 invoke 핸들러, permission 세트를 가진 tauri::plugin::Builder야. CLI가 tauri plugin new(나 create 명령)로 전체 구조를 스캐폴딩해줘 — Rust 크레이트, JS 패키지, permission 스켈레톤 생성. command는 앱 command 쓰듯 채워 — 플러그인 래퍼가 그걸 이식 가능하고 부여-통제되게 만들어.

Code

최소 플러그인 스켈레톤·rust
use tauri::{plugin::{Builder, TauriPlugin}, Runtime};

#[tauri::command]
fn do_thing() -> String { "from the plugin".into() }

// 플러그인은 자기 command를 묶는 이름 있는 Builder야.
pub fn init<R: Runtime>() -> TauriPlugin<R> {
    Builder::new("my-plugin")
        .invoke_handler(tauri::generate_handler![do_thing])
        .build()
}

// 앱은 공식 플러그인처럼 그대로 써:
//   .plugin(my_plugin::init())
CLI가 구조를 생성하게·bash
# 전체 플러그인 스캐폴딩 (Rust 크레이트 + JS 패키지 + permissions).
npm create tauri-plugin my-plugin
# 또는, 프로젝트 안에서:
npm run tauri plugin new my-plugin

External links

Exercise

결정하고-정당화해: 기능 세 개(예: '내 앱의 노트 저장', '재사용 가능한 QR 코드 생성기', '모바일 전용 네이티브 API 래퍼')를 각각 '모듈' 또는 '플러그인'으로 라벨하고 한 문장 이유를 대. 그다음 선택적으로 tauri plugin new를 돌려 생성된 구조를 읽고 플러그인이 실제로 뭘 패키징하는지 봐. 모듈-vs-플러그인 판단이 진짜 레슨이야.
Hint
앱 전용 저장 → 모듈. 앱 간 재사용 생성기 → 플러그인. 모바일 네이티브 API 래퍼 → 플러그인(플러그인이 Swift/Kotlin 번들하는 방법). '다른 앱이나 다른 개발자가 이걸 쓸까?'가 결정 질문이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.