본문 바로가기
C.W.K.
Stream
Lesson 01 of 07 · published

tauri build: 진짜 무슨 일이 나나

~12 min · tauri, build, release, bundling

Level 0웹 관광객
0 XP0/56 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"tauri build는 명령 하나에 일 두 개가 들어 있어. 릴리스 바이너리를 컴파일하고, 그다음 사람들이 진짜로 더블클릭할 설치 파일로 감싸기."

두 단계

tauri build를 돌리면 먼저 beforeBuildCommand를 실행해서 정적 프론트엔드를 만들고, Rust 코어를 release 모드(최적화가 붙고, 컴파일은 느리고, 대신 작고 빠르게 돌아)로 컴파일하고, 프론트엔드를 바이너리 안에 박고, 마지막으로 번들러한테 넘겨서 OS별 설치 포맷을 만들어. 결과물은 메일로 보낼 헐렁한 실행파일이 아니라 src-tauri/target/release/bundle/ 아래 제대로 된 설치 파일이야.

릴리스는 완전히 다른 물건이야

tauri dev에서 잰 건 전부 debug 빌드였어. 릴리스는 진짜 최적화를 걸어. 바이너리가 확 줄고 더 빨라지지. Tauri가 '작은 앱'으로 이름난 이유가 실제로 사는 곳이 거기야. 대신 컴파일 시간이 대가고 — 깨끗한 상태에서 릴리스를 빌드하면 몇 분 걸려. 그래서 다들 CI에서 Rust target/ 디렉터리를 캐싱하고, 크기나 성능은 개발 빌드 말고 릴리스 결과물로만 판단하는 거야.

쓰게 될 빌드 손잡이들

플래그 두 개가 일찍부터 쓸모 있어. --no-bundle은 설치 파일을 안 만들고 바이너리만 컴파일해 — 패키징된 결과물이 필요 없는 CI의 '빌드는 되나?' 확인에 딱이야. --bundles <format>은 설정에 적힌 전부 대신 어떤 설치 포맷만 만들지 좁혀줘(dmg만 뽑는다든지). 그리고 --debug는 릴리스 최적화 없이 테스트용으로 뭔가를 패키징할 때 debug 빌드를 번들해줘.

Code

빌드 명령이랑 쓸 만한 플래그·bash
# 풀 릴리스: 최적화 바이너리 + 설정된 모든 설치 파일.
npm run tauri build

# CI '컴파일 되나?' 체크 — 설치 파일 건너뛰기.
npm run tauri build -- --no-bundle

# 특정 설치 포맷만 빌드.
npm run tauri build -- --bundles dmg

# DEBUG 빌드 패키징 (테스트용, 릴리스 아님).
npm run tauri build -- --debug
내보낼 결과물이 떨어지는 자리·text
src-tauri/target/release/
├─ my-app                       # 생 최적화 바이너리
└─ bundle/
    ├─ macos/My App.app         # macOS 앱 번들
    ├─ dmg/My App_1.0.0_*.dmg   # macOS 설치 파일
    ├─ msi/ , nsis/             # (Windows에서) 설치 파일
    └─ deb/ , appimage/         # (Linux에서) 설치 파일

External links

Exercise

앱에 tauri build를 돌리고, 그다음 --bundles <네-OS-포맷>(macOS는 dmg, Windows는 nsis, Linux는 deb)으로 다시 돌려서 bundle/에 뭐가 생기는지 비교해봐. 그다음 --no-bundle로 돌려서 패키징 단계가 빠지면 얼마나 빠른지 봐. 이제 build의 각 단계가 뭘 잡아먹고 뭘 만들어내는지 알 거야.
Hint
전체 빌드는 설정에 적힌 설치 파일을 다 만들고, --bundles가 그걸 좁히고, --no-bundle은 설치 파일을 통째로 건너뛰어(제일 빠름). 생 바이너리는 target/release/에, 설치 파일은 target/release/bundle/<format>/에 있어.

Progress

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

댓글 0

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

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