GitHub - tw93/Pake: ๐Ÿคฑ๐Ÿป Turn any webpage into a desktop app with one command.
Service

GitHub - tw93/Pake: ๐Ÿคฑ๐Ÿป Turn any webpage into a desktop app with one command.

tw93
2026.03.05
ยทGitHubยทby ๋„ค๋ฃจ
#CLI#Desktop App#Rust#Tauri#Webview

ํ•ต์‹ฌ ํฌ์ธํŠธ

  • 1Pake๋Š” Rust Tauri ๊ธฐ๋ฐ˜์œผ๋กœ ์›นํŽ˜์ด์ง€๋ฅผ macOS, Windows, Linux ๋ฐ์Šคํฌํ†ฑ ์•ฑ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉฐ, Electron ๋Œ€๋น„ 20๋ฐฐ ๊ฐ€๋ณ๊ณ  ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • 2CLI ๋„๊ตฌ๋‚˜ ์˜จ๋ผ์ธ ๋นŒ๋”ฉ์„ ํ†ตํ•ด ์›ํด๋ฆญ์œผ๋กœ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐ”๋กœ๊ฐ€๊ธฐ, ์ฐฝ ์„ค์ •, ์Šคํƒ€์ผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • 3์ดˆ๋ณด์ž๋Š” ์ธ๊ธฐ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์˜จ๋ผ์ธ ๋นŒ๋”ฉ์„ ํ™œ์šฉํ•˜๊ณ , ๊ฐœ๋ฐœ์ž๋Š” CLI๋ฅผ ํ†ตํ•ด ์ปค์Šคํ…€ ์˜ต์…˜์œผ๋กœ ํŒจํ‚ค์ง•ํ•˜๋ฉฐ, ๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž๋Š” ๋กœ์ปฌ ๊ฐœ๋ฐœ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Pake๋Š” ์–ด๋– ํ•œ ์›นํŽ˜์ด์ง€๋“  macOS, Windows, Linux ์šด์˜์ฒด์ œ์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด๋‹ค. ์ด๋Š” ๋‹จ ํ•œ ๋ฒˆ์˜ ๋ช…๋ น์œผ๋กœ ์›นํŽ˜์ด์ง€๋ฅผ ๋…๋ฆฝํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ํŒจํ‚ค์ง•ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ์˜ ํ•ต์‹ฌ ๋ฐฉ๋ฒ•๋ก ์€ Rust ๊ธฐ๋ฐ˜์˜ Tauri ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. Tauri๋Š” ๊ฒฝ๋Ÿ‰ํ™”๋œ Rust ๋ฐฑ์—”๋“œ์™€ ์›น ๊ธฐ๋ฐ˜ ํ”„๋ŸฐํŠธ์—”๋“œ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. Pake๋Š” ์›น ์ฝ˜ํ…์ธ ๋ฅผ ์ž์ฒด์ ์ธ ๊ฒฝ๋Ÿ‰ ์›น๋ทฐ(webview) ์ธ์Šคํ„ด์Šค์— ๋กœ๋“œํ•จ์œผ๋กœ์จ, ์›น ๋ธŒ๋ผ์šฐ์ € ์—†์ด๋„ ์›น์‚ฌ์ดํŠธ๊ฐ€ ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“ ๋‹ค. ์ด๋Š” ๊ธฐ์กด JavaScript ๊ธฐ๋ฐ˜์˜ Electron ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋‹ฌ๋ฆฌ, Rust์˜ ์„ฑ๋Šฅ ์ด์ ๊ณผ ๋‚ฎ์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ํ™œ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํฌ๊ธฐ๋ฅผ ๋Œ€ํญ ์ค„์ด๊ณ  ์‹คํ–‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ Pake๋กœ ์ƒ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Electron ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณด๋‹ค ์•ฝ 20๋ฐฐ ์ž‘์œผ๋ฉฐ, 5MB ๋‚ด์™ธ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

์ฃผ์š” ํŠน์ง•์œผ๋กœ๋Š” ๊ฒฝ๋Ÿ‰์„ฑ(Lightweight), ๋น ๋ฅธ ์†๋„(Fast), ์‰ฌ์šด ์‚ฌ์šฉ์„ฑ(Easy to use), ๊ทธ๋ฆฌ๊ณ  ํ’๋ถ€ํ•œ ๊ธฐ๋Šฅ(Feature-rich)์ด ๊ฐ•์กฐ๋œ๋‹ค. ํŠนํžˆ Pake๋Š” ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋‹จ์ถ•ํ‚ค ์ง€์›, ๋ชฐ์ž…ํ˜•(immersive) ์œˆ๋„์šฐ ๋ชจ๋“œ, ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ๊ธฐ๋Šฅ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šคํƒ€์ผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•, ๊ทธ๋ฆฌ๊ณ  ๊ด‘๊ณ  ์ œ๊ฑฐ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

์‚ฌ์šฉ์ž๋“ค์€ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์œผ๋กœ Pake๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ดˆ๋ณด์ž๋Š” ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ์ธ๊ธฐ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ฑฐ๋‚˜, ํ™˜๊ฒฝ ์„ค์ • ์—†์ด ์˜จ๋ผ์ธ ๋นŒ๋“œ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” pnpm install -g pake-cli ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Pake CLI(Command-Line Interface) ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•˜์—ฌ ๋ชจ๋“  ์›น์‚ฌ์ดํŠธ๋ฅผ ์ง์ ‘ ํŒจํ‚ค์ง•ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๊ณผ์ •์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„, ์•„์ด์ฝ˜, ์œˆ๋„์šฐ ํฌ๊ธฐ ๋ฐ ๋ชจ์–‘(์˜ˆ: hide-title-bar ์˜ต์…˜) ๋“ฑ์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒ˜์Œ ํŒจํ‚ค์ง• ์‹œ์—๋Š” Rust ๋ฐ Node ํ™˜๊ฒฝ ์„ค์ •์ด ํ•„์š”ํ•˜์—ฌ ์‹œ๊ฐ„์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ดํ›„์˜ ๋นŒ๋“œ๋Š” ๋น ๋ฅด๋‹ค. ๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋กœ์ปฌ์— ํด๋ก ํ•˜์—ฌ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋ฉฐ Custom Development๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜, ์Šคํƒ€์ผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•, ๊ธฐ๋Šฅ ๊ฐ•ํ™”, ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ํ†ต์‹ ๊ณผ ๊ฐ™์€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด Advanced Usage ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.

Pake ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์–‘ํ•œ ๋‹จ์ถ•ํ‚ค๋ฅผ ์ง€์›ํ•˜์—ฌ ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ์„ ๋†’์ธ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, โŒ˜ + [ (Mac) ๋˜๋Š” Ctrl + โ† (Windows/Linux)๋Š” ์ด์ „ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ณ , โŒ˜ + r ๋˜๋Š” Ctrl + r์€ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉฐ, โŒ˜ + โ‡ง + I ๋˜๋Š” Ctrl + Shift + I๋Š” ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ํ† ๊ธ€(Debug Only)ํ•œ๋‹ค. ๋˜ํ•œ, ํƒ€์ดํ‹€ ๋ฐ”๋ฅผ ๋”๋ธ” ํด๋ฆญํ•˜์—ฌ ์ „์ฒด ํ™”๋ฉด ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜๊ฑฐ๋‚˜, Mac์—์„œ๋Š” ์ œ์Šค์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•˜๊ณ  ์œˆ๋„์šฐ๋ฅผ ์ด๋™ํ•˜๋Š” ๋“ฑ ๋„ค์ดํ‹ฐ๋ธŒ(native) ๋ฐ์Šคํฌํ†ฑ ํ™˜๊ฒฝ๊ณผ์˜ ํ†ตํ•ฉ์„ ๊ฐ•ํ™”ํ•œ๋‹ค.

๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •์€ Rust ๋ฒ„์ „ 1.85 ์ด์ƒ๊ณผ Node ๋ฒ„์ „ 22 ์ด์ƒ์„ ์š”๊ตฌํ•˜๋ฉฐ, pnpm i๋กœ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•œ ํ›„ pnpm run dev๋กœ ๋กœ์ปฌ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ฑฐ๋‚˜ pnpm run build๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค. Pake๋Š” default_app_list.json ํŒŒ์ผ์„ ํ†ตํ•ด ์ถ”์ฒœ ์•ฑ ๋ชฉ๋ก์„ ๊ด€๋ฆฌํ•˜๋ฉฐ, package.json๊ณผ pnpm-lock.yaml์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ์ข…์†์„ฑ์„ ์ •์˜ํ•œ๋‹ค. ๋นŒ๋“œ ๊ณผ์ •์€ rollup.config.js์™€ tsconfig.json์„ ํ†ตํ•ด ์„ค์ •๋œ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค๋ฅผ ๋”ฐ๋ฅธ๋‹ค.