GitHub - tw93/Pake: ๐คฑ๐ป Turn any webpage into a desktop app with one command.
ํต์ฌ ํฌ์ธํธ
- 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 ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฅธ๋ค.