๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ฆ bundle

๐Ÿ“ฆ Capgo Cloud์—์„œ ๋ฐฐํฌํ•  ์•ฑ bundle์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์—…๋กœ๋“œ, ํ˜ธํ™˜์„ฑ ๊ฒ€์‚ฌ, ์•”ํ˜ธํ™”๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

โฌ†๏ธ ์—…๋กœ๋“œ

โ€œ โฌ†๏ธ Uploadโ€ ์„น์…˜

๋ณ„์นญ: u

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle upload

๋ฐฐํฌ๋ฅผ ์œ„ํ•ด Capgo Cloud์— ์ƒˆ ์•ฑ ๋ฒˆ๋“ค์„ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „์€ 0.0.0๋ณด๋‹ค ์ปค์•ผ ํ•˜๋ฉฐ ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ์„ ์œ„ํ•ด ์‚ญ์ œ๋œ ๋ฒ„์ „์€ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. External ์˜ต์…˜: URL ๋งํฌ๋งŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค(200MB ์ดˆ๊ณผ ์•ฑ์ด๋‚˜ ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ์„ ๋•Œ ์œ ์šฉ). Capgo์€ ์™ธ๋ถ€ ์ฝ˜ํ…์ธ ๋ฅผ ์ „ํ˜€ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. trustless ๋ณด์•ˆ์„ ์œ„ํ•ด ์•”ํ˜ธํ™”๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle upload com.example.app --path ./dist --channel production,beta

๊ฐ’์„ ์ „๋‹ฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ฑ„๋„(๋˜๋Š” ์ตœ์‹  ์›๊ฒฉ ์•ฑ ๋ฒ„์ „)์˜ ๋‹ค์Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ semver๋กœ ์ž๋™์œผ๋กœ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค. --bundle. CI์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค: package.json ์ด๋ฏธ Capgo์— ์žˆ๋Š” ๋ฒ„์ „๊ณผ ์ผ์น˜ํ•˜๋ฉด:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle upload --channel=production --auto-bump
npx @capgo/cli@latest bundle upload --auto-bump major
npx @capgo/cli@latest bundle upload --auto-bump minor # default when the flag has no value
npx @capgo/cli@latest bundle upload --auto-bump patch # alias: fix
npx @capgo/cli@latest bundle upload --auto-bump metadata
npx @capgo/cli@latest bundle upload --channel=production --auto-bump ai

์‚ฌ์šฉํ•˜๋ฉด --auto-bump ai, Capgo Cloudflare Workers AI๊ฐ€ ๋กœ์ปฌ bundle ํŒŒ์ผ๊ณผ ์ด์ „ Capgo/์ฑ„๋„ delta manifest๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ถ”๋ก ํ•ฉ๋‹ˆ๋‹ค major | minor | patch | metadata, ๊ทธ๋ฆฌ๊ณ  CLI ๋กœ๊ทธ์— ์งง์€ ์ด์œ ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ Capgo ๋ฒ„์ „์ด ์—†์œผ๋ฉด AI๊ฐ€ ๊ฑด๋„ˆ๋›ฐ๊ณ  bump๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค patch๋Š”.

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐ์œ ํ˜•์„ค๋ช…
-astring๊ณ„์ •์— ์—ฐ๊ฒฐํ•  API ํ‚ค
-pstring์—…๋กœ๋“œํ•  ํด๋” ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด capacitor.config์— ์„ค์ •๋œ webDir์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
-cstring์—ฐ๊ฒฐํ•  Channel. ์—ฌ๋Ÿฌ Channel์€ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: production,beta
โ€”rolloutstring์—…๋กœ๋“œ๋œ bundle์„ 0~100 ์‚ฌ์ด์˜ ๋ฐฑ๋ถ„์œจ๋กœ ์ด Channel์˜ rollout ๋Œ€์ƒ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค
โ€”stablebooleanrollout์ด ๊ตฌ์„ฑ๋œ Channel์—์„œ rollout ๋Œ€์ƒ ๋Œ€์‹  stable fallback์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค
โ€”rollout-percentage-bpsstring์—…๋กœ๋“œ๋œ bundle์˜ rollout ๋ฐฑ๋ถ„์œจ์„ 0~10000 ์‚ฌ์ด์˜ basis points๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค
โ€”rollout-cache-ttl-secondsstringCloudflare ๋กค์•„์›ƒ ๊ฒฐ์ • ์บ์‹œ TTL(์ดˆ)
-estringCapgo Cloud์— ์—…๋กœ๋“œํ•˜๋Š” ๋Œ€์‹  ์™ธ๋ถ€ URL๋กœ ์—ฐ๊ฒฐ
โ€”iv-session-keystring์™ธ๋ถ€ ๋ฒˆ๋“ค URL์šฉ IV ๋ฐ ์„ธ์…˜ ํ‚ค ์„ค์ •
โ€”s3-regionstringS3 ๋ฒ„ํ‚ท์˜ ๋ฆฌ์ „
โ€”s3-apikeystringS3 ์—”๋“œํฌ์ธํŠธ์šฉ API ํ‚ค
โ€”s3-apisecretstringS3 ์—”๋“œํฌ์ธํŠธ์šฉ API secret
โ€”s3-endpointstringS3 ์—”๋“œํฌ์ธํŠธ URL
โ€”s3-bucket-namestringAWS S3 ๋ฒ„ํ‚ท ์ด๋ฆ„
โ€”s3-portstringS3 ์—”๋“œํฌ์ธํŠธ ํฌํŠธ
โ€”no-s3-sslbooleanS3 ์—…๋กœ๋“œ ์‹œ SSL ๋น„ํ™œ์„ฑํ™”
โ€”key-v2string๊ฐœ์ธ ์„œ๋ช… ํ‚ค์˜ ์‚ฌ์šฉ์ž ์ง€์ • ๊ฒฝ๋กœ (v2 ์‹œ์Šคํ…œ)
โ€”key-data-v2string๊ฐœ์ธ ์„œ๋ช… ํ‚ค (v2 ์‹œ์Šคํ…œ)
โ€”bundle-urlbooleanBundle URL์„ stdout์— ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค
โ€”no-keyboolean์„œ๋ช… ํ‚ค๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ํ‰๋ฌธ ์—…๋ฐ์ดํŠธ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค
โ€”no-code-checkboolean์†Œ์Šค code์—์„œ notifyAppReady() ํ˜ธ์ถœ ์—ฌ๋ถ€์™€ ๋ฃจํŠธ ํด๋”์˜ index ์กด์žฌ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค
โ€”display-iv-sessionboolean์—…๋ฐ์ดํŠธ ์•”ํ˜ธํ™”์— ์‚ฌ์šฉ๋œ IV์™€ ์„ธ์…˜ ํ‚ค๋ฅผ ์ฝ˜์†”์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค
-bstring์—…๋กœ๋“œํ•  bundle์˜ ๋ฒ„์ „ ๋ฒˆํ˜ธ
โ€”auto-bumpstring์ฑ„๋„์— ์—ฐ๊ฒฐ๋œ bundle์„ ๊ธฐ์ค€์œผ๋กœ ์ž๋™ ์ฆ๋ถ„ํ•˜๋ฉฐ, ์—†์œผ๋ฉด ์ตœ์‹  ์›๊ฒฉ ์•ฑ ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ๋ฒจ: major, minor(๊ธฐ๋ณธ๊ฐ’), patch(๋ณ„์นญ: fix), metadata ๋˜๋Š” ai(Workers AI๊ฐ€ ๋กœ์ปฌ๊ณผ ์ด์ „ delta manifest๋ฅผ ๋น„๊ตํ•ด ๋ ˆ๋ฒจ์„ ์ถ”๋ก ํ•˜๋ฉฐ, ์ด์ „ Capgo ๋ฒ„์ „์ด ์—†์œผ๋ฉด patch๋กœ ํด๋ฐฑํ•ฉ๋‹ˆ๋‹ค). ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ์ฆ๋ถ„ํ•ฉ๋‹ˆ๋‹ค(์‚ญ์ œ๋œ ์ด๋ฆ„์€ ๊ณ„์† ์ ์œ ๋ฉ๋‹ˆ๋‹ค). โ€”bundle(-b)๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
โ€”linkstring์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค ๋งํฌ (์˜ˆ: GitHub ๋ฆด๋ฆฌ์Šค)
โ€”commentstring์ด ๋ฒ„์ „์— ๋Œ€ํ•œ ์ฝ”๋ฉ˜ํŠธ. ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ, ์ปค๋ฐ‹ ํ•ด์‹œ, ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ๋“ฑ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€”min-update-versionstring์ด ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ตœ์†Œ ๋ฒ„์ „. ์ฑ„๋„์˜ disable auto update๊ฐ€ metadata๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
โ€”auto-min-update-versionboolean๋„ค์ดํ‹ฐ๋ธŒ ํŒจํ‚ค์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ตœ์†Œ ์—…๋ฐ์ดํŠธ ๋ฒ„์ „์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
โ€”ignore-metadata-checkboolean์—…๋กœ๋“œ ์‹œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(node_modules) ๊ฒ€์‚ฌ๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.
โ€”fail-on-incompatibleboolean๋ฒˆ๋“ค์ด ์ฑ„๋„์˜ ํ˜„์žฌ ๋„ค์ดํ‹ฐ๋ธŒ ํŒจํ‚ค์ง€์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์—…๋กœ๋“œ ๋Œ€์‹  ์—…๋กœ๋“œ๋ฅผ ์‹คํŒจ์‹œํ‚ต๋‹ˆ๋‹ค(๋น„์˜ ์ข…๋ฃŒ). ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ํ„ฐ๋ฏธ๋„์—์„œ๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ๋นŒ๋“œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฑฐ์ ˆํ•˜๋ฉด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. โ€”ignore-metadata-check์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
โ€”ignore-checksum-checkboolean์—…๋กœ๋“œ ์‹œ ์ฒดํฌ์„ฌ ๊ฒ€์‚ฌ๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค
โ€”force-crc32-checksumboolean์—…๋กœ๋“œ์— CRC32 ์ฒดํฌ์„ฌ์„ ๊ฐ•์ œ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค (์ž๋™ ๊ฐ์ง€ ์˜ค๋ฒ„๋ผ์ด๋“œ)
โ€”timeoutstring์—…๋กœ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ํƒ€์ž„์•„์›ƒ(์ดˆ)
โ€”multipartboolean[๋น„์ถ”์ฒœ] ๋Œ€์‹  โ€”tus๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. S3 ์—…๋กœ๋“œ์— multipart ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
โ€”zipbooleanzip์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒˆ๋“ค์„ Capgo ํด๋ผ์šฐ๋“œ์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค (๋ ˆ๊ฑฐ์‹œ)
โ€”tusbooleanTUS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒˆ๋“ค์„ Capgo ํด๋ผ์šฐ๋“œ์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค
โ€”tus-chunk-sizestringTUS ์žฌ๊ฐœ ๊ฐ€๋Šฅ ์—…๋กœ๋“œ์˜ ๋ฐ”์ดํŠธ ๋‹จ์œ„ chunk size (๊ธฐ๋ณธ๊ฐ’: auto)
โ€”partialboolean[DEPRECATED] ๋Œ€์‹  โ€”delta๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ฆ๋ถ„ ์—…๋ฐ์ดํŠธ๋ฅผ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
โ€”partial-onlyboolean[DEPRECATED] ๋Œ€์‹  โ€”delta-only๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ „์ฒด ๋ฒˆ๋“ค์€ ๊ฑด๋„ˆ๋›ฐ๊ณ  ์ฆ๋ถ„ ์—…๋ฐ์ดํŠธ๋งŒ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
โ€”deltaboolean๋Œ€์šฉ๋Ÿ‰ zip ๋‹ค์šด๋กœ๋“œ ๋Œ€์‹  delta ์—…๋ฐ์ดํŠธ(๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๋งŒ)๋ฅผ ์—…๋กœ๋“œํ•ด ์ฆ‰์‹œ, ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
โ€”delta-onlyboolean์ตœ๋Œ€ ์†๋„๋ฅผ ์œ„ํ•ด ์ „์ฒด ๋ฒˆ๋“ค ์—†์ด delta ์—…๋ฐ์ดํŠธ๋งŒ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค (๋Œ€๊ทœ๋ชจ ์•ฑ์— ์œ ์šฉ).
โ€”no-deltaboolean์ฆ‰๊ฐ์ ์ธ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์–ด๋„ delta ์—…๋ฐ์ดํŠธ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
โ€”encrypted-checksumstring์•”ํ˜ธํ™”๋œ ์ฒดํฌ์„ฌ(์„œ๋ช…)์ž…๋‹ˆ๋‹ค. ์™ธ๋ถ€ ๋ฒˆ๋“ค์„ ์—…๋กœ๋“œํ•  ๋•Œ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
โ€”auto-set-bundlebooleancapacitor.config.json์— bundle ์„ค์ •
โ€”dry-uploadbooleanbundle ์—…๋กœ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ Dry upload๋กœ ์‹คํ–‰: ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์ฑ„๋„์„ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— row๋งŒ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค (Capgo ๋‚ด๋ถ€ ํ…Œ์ŠคํŠธ์šฉ)
โ€”package-jsonstring๋ชจ๋…ธ๋ ˆํฌ์˜ package.json ํŒŒ์ผ ๊ฒฝ๋กœ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
โ€”node-modulesstring๋ชจ๋…ธ๋ ˆํฌ์˜ node_modules ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
โ€”encrypt-partialbooleanDelta ์—…๋ฐ์ดํŠธ ํŒŒ์ผ ์•”ํ˜ธํ™” (updater > 6.14.4์—์„œ ์ž๋™ ํ™œ์„ฑํ™”)
โ€”delete-linked-bundle-on-uploadboolean์—…๋กœ๋“œํ•˜๋ ค๋Š” ์ฑ„๋„์—์„œ ํ˜„์žฌ ๋งํฌ๋œ ๋ฒˆ๋“ค์„ ์ฐพ์•„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค
โ€”no-brotli-patternsstringBrotli ์••์ถ•์—์„œ ์ œ์™ธํ•  ํŒŒ์ผ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ glob ํŒจํ„ด, ์˜ˆ: โ€œ.jpg,.pngโ€)
โ€”disable-brotliboolean์—…๋ฐ์ดํ„ฐ ๋ฒ„์ „์ด ์ง€์›ํ•˜๋”๋ผ๋„ Brotli ์••์ถ•์„ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค
โ€”version-exists-okboolean๋ฒˆ๋“ค ๋ฒ„์ „์ด ์ด๋ฏธ ์กด์žฌํ•˜๋ฉด ์„ฑ๊ณต์œผ๋กœ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋…ธ๋ ˆํฌ CI/CD ์›Œํฌํ”Œ๋กœ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค
โ€”self-assignboolean๋””๋ฐ”์ด์Šค๊ฐ€ ์ด ์ฑ„๋„์— ์ž๋™์œผ๋กœ ์ฐธ์—ฌํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค (updates ์ฑ„๋„ ์„ค์ •)
โ€”qr-previewboolean์—…๋กœ๋“œ ํ›„ ์ด ๋ฒˆ๋“ค ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์œ„ํ•œ ํ„ฐ๋ฏธ๋„ QR code๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค
โ€”send-update-notificationboolean๋งํฌ๋œ ์ฑ„๋„ bundle ์—…๋ฐ์ดํŠธ ํ›„ ๊ธฐ๊ธฐ์— ๋„ค์ดํ‹ฐ๋ธŒ ์—…๋ฐ์ดํŠธ ํ™•์ธ ์•Œ๋ฆผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค
โ€”supa-hoststring์ปค์Šคํ…€ Supabase ํ˜ธ์ŠคํŠธ URL (์…€ํ”„ ํ˜ธ์ŠคํŒ… ๋˜๋Š” Capgo ๊ฐœ๋ฐœ์šฉ)
โ€”supa-anonstring์ปค์Šคํ…€ Supabase anon key (์…€ํ”„ ํ˜ธ์ŠคํŒ…์šฉ)
โ€”verboseboolean์ƒ์„ธ ๋กœ๊ทธ๊ฐ€ ํฌํ•จ๋œ verbose ์ถœ๋ ฅ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle compatibility

๐Ÿงช Capgo Cloud์—์„œ ํŠน์ • ์ฑ„๋„๊ณผ ๋ฒˆ๋“ค์˜ ํ˜ธํ™˜์„ฑ์„ ํ™•์ธํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๊ฐ€ ์•ˆ์ „ํ•œ์ง€ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle compatibility com.example.app --channel production

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐ์œ ํ˜•์„ค๋ช…
-astring๊ณ„์ •์— ์—ฐ๊ฒฐํ•  API ํ‚ค
-cstringํ˜ธํ™˜์„ฑ์„ ํ™•์ธํ•  ์ฑ„๋„
โ€”textboolean์ด๋ชจ์ง€ ๋Œ€์‹  ํ…์ŠคํŠธ ์ถœ๋ ฅ
โ€”package-jsonstring๋ชจ๋…ธ๋ ˆํฌ์˜ package.json ํŒŒ์ผ ๊ฒฝ๋กœ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
โ€”node-modulesstring๋ชจ๋…ธ๋ ˆํฌ์˜ node_modules ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
โ€”supa-hoststring์ปค์Šคํ…€ Supabase ํ˜ธ์ŠคํŠธ URL (์…€ํ”„ ํ˜ธ์ŠคํŒ… ๋˜๋Š” Capgo ๊ฐœ๋ฐœ์šฉ)
โ€”supa-anonstring์ปค์Šคํ…€ Supabase anon key (์…€ํ”„ ํ˜ธ์ŠคํŒ…์šฉ)
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle releaseType

๐Ÿงญ ์ฑ„๋„์˜ ์ตœ์‹  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ˜ธํ™˜์„ฑ์— ๋”ฐ๋ผ โ€œnativeโ€ ๋˜๋Š” โ€œOTAโ€๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle releaseType com.example.app --channel production

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐ์œ ํ˜•์„ค๋ช…
-astring๊ณ„์ •์— ์—ฐ๊ฒฐํ•  API ํ‚ค
-cstring๋น„๊ตํ•  Channel
โ€”package-jsonstring๋ชจ๋…ธ๋ ˆํฌ์˜ package.json ํŒŒ์ผ ๊ฒฝ๋กœ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
โ€”node-modulesstring๋ชจ๋…ธ๋ ˆํฌ์˜ node_modules ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
โ€”supa-hoststring์ปค์Šคํ…€ Supabase ํ˜ธ์ŠคํŠธ URL (์…€ํ”„ ํ˜ธ์ŠคํŒ… ๋˜๋Š” Capgo ๊ฐœ๋ฐœ์šฉ)
โ€”supa-anonstring์ปค์Šคํ…€ Supabase anon key (์…€ํ”„ ํ˜ธ์ŠคํŒ…์šฉ)

๋ณ„์นญ: d

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle delete

๐Ÿ—‘๏ธ Capgo Cloud์—์„œ ํŠน์ • ๋ฒ„์ „์„ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•˜์—ฌ ํŠน์ • bundle์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle delete BUNDLE_ID com.example.app

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐ์œ ํ˜•์„ค๋ช…
-astring๊ณ„์ •์— ์—ฐ๊ฒฐํ•  API ํ‚ค
โ€”supa-hoststring์ปค์Šคํ…€ Supabase ํ˜ธ์ŠคํŠธ URL (์…€ํ”„ ํ˜ธ์ŠคํŒ… ๋˜๋Š” Capgo ๊ฐœ๋ฐœ์šฉ)
โ€”supa-anonstring์ปค์Šคํ…€ Supabase anon key (์…€ํ”„ ํ˜ธ์ŠคํŒ…์šฉ)

๋ณ„์นญ: l

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle list

๐Ÿ“‹ Capgo Cloud์—์„œ ์•ฑ์— ์—…๋กœ๋“œ๋œ ๋ชจ๋“  bundle์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle list com.example.app

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐ์œ ํ˜•์„ค๋ช…
-astring๊ณ„์ •์— ์—ฐ๊ฒฐํ•  API ํ‚ค
โ€”supa-hoststring์ปค์Šคํ…€ Supabase ํ˜ธ์ŠคํŠธ URL (์…€ํ”„ ํ˜ธ์ŠคํŒ… ๋˜๋Š” Capgo ๊ฐœ๋ฐœ์šฉ)
โ€”supa-anonstring์ปค์Šคํ…€ Supabase anon key (์…€ํ”„ ํ˜ธ์ŠคํŒ…์šฉ)

๋ณ„์นญ: c

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle cleanup

์ง€์ •๋œ ์ตœ๊ทผ ๋ฒ„์ „ ์ˆ˜๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ Capgo Cloud์˜ ์˜ค๋ž˜๋œ bundle์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์ฑ„๋„์— ์—ฐ๊ฒฐ๋œ bundle์€ โ€”ignore-channel์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ ๋ณด์กด๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle cleanup com.example.app --bundle=1.0 --keep=3

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐ์œ ํ˜•์„ค๋ช…
-bstring์‚ญ์ œํ•  ์•ฑ์˜ Bundle ๋ฒ„์ „ ๋ฒˆํ˜ธ
-astring๊ณ„์ •์— ์—ฐ๊ฒฐํ•  API ํ‚ค
-kstring์œ ์ง€ํ•  ๋ฒ„์ „ ์ˆ˜
-fboolean๊ฐ•์ œ ์‚ญ์ œ
โ€”ignore-channelboolean์ฑ„๋„์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋”๋ผ๋„ ๋ฒˆ๋“ค์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค (๊ฒฝ๊ณ : ์ฑ„๋„๋„ ํ•จ๊ป˜ ์‚ญ์ œ๋จ)
โ€”supa-hoststring์ปค์Šคํ…€ Supabase ํ˜ธ์ŠคํŠธ URL (์…€ํ”„ ํ˜ธ์ŠคํŒ… ๋˜๋Š” Capgo ๊ฐœ๋ฐœ์šฉ)
โ€”supa-anonstring์ปค์Šคํ…€ Supabase anon key (์…€ํ”„ ํ˜ธ์ŠคํŒ…์šฉ)

๐Ÿ”’ ์•”ํ˜ธํ™”

โ€œ๐Ÿ”’ Encryptโ€ ์„น์…˜
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle encrypt

์•ˆ์ „ํ•œ ์™ธ๋ถ€ ์ €์žฅ์„ ์œ„ํ•ด zip ๋ฒˆ๋“ค์„ ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค. ์—…๋กœ๋“œ/๋ณตํ˜ธํ™”๋ฅผ ์œ„ํ•œ ivSessionKey๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ฒดํฌ์„ฌ์€ โ€˜bundle zip โ€”jsonโ€™์œผ๋กœ ํ™•์ธํ•˜์„ธ์š”.

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle encrypt ./myapp.zip CHECKSUM

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐ์œ ํ˜•์„ค๋ช…
โ€”keystring๊ฐœ์ธ ์„œ๋ช… ํ‚ค์˜ ์‚ฌ์šฉ์ž ์ง€์ • ๊ฒฝ๋กœ
โ€”key-datastring๊ฐœ์ธ ์„œ๋ช… ํ‚ค
-jbooleanJSON์œผ๋กœ ์ถœ๋ ฅ
โ€”package-jsonstring๋ชจ๋…ธ๋ ˆํฌ์˜ package.json ํŒŒ์ผ ๊ฒฝ๋กœ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle decrypt

์•”ํ˜ธํ™”๋œ bundle์„ ๋ณตํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค(ํ…Œ์ŠคํŠธ ์šฉ๋„๋กœ ์ฃผ๋กœ ์‚ฌ์šฉ). ๊ฒ€์ฆ์„ ์œ„ํ•ด base64 ์„ธ์…˜ ํ‚ค๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle decrypt ./myapp_encrypted.zip CHECKSUM

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐ์œ ํ˜•์„ค๋ช…
โ€”keystring๊ฐœ์ธ ์„œ๋ช… ํ‚ค์˜ ์‚ฌ์šฉ์ž ์ง€์ • ๊ฒฝ๋กœ
โ€”key-datastring๊ฐœ์ธ ์„œ๋ช… ํ‚ค
โ€”checksumstringBundle์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ checksum
โ€”package-jsonstring๋ชจ๋…ธ๋ ˆํฌ์˜ package.json ํŒŒ์ผ ๊ฒฝ๋กœ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)
ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle zip

๐Ÿ—œ๏ธ ์•ฑ ๋ฒˆ๋“ค์˜ zip ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”์— ์‚ฌ์šฉํ•  ์ฒดํฌ์„ฌ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๊ณ„๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด โ€”json์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

์˜ˆ์‹œ:

ํ„ฐ๋ฏธ๋„ ์ฐฝ
npx @capgo/cli@latest bundle zip com.example.app --path ./dist

์˜ต์…˜:

ํŒŒ๋ผ๋ฏธํ„ฐ์œ ํ˜•์„ค๋ช…
-pstring์—…๋กœ๋“œํ•  ํด๋” ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด capacitor.config์— ์„ค์ •๋œ webDir์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
-bstringzip ํŒŒ์ผ ์ด๋ฆ„์— ์‚ฌ์šฉํ•  Bundle ๋ฒ„์ „ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.
-nstringzip ํŒŒ์ผ ์ด๋ฆ„
-jbooleanJSON์œผ๋กœ ์ถœ๋ ฅ
โ€”no-code-checkboolean์†Œ์Šค code์—์„œ notifyAppReady() ํ˜ธ์ถœ ์—ฌ๋ถ€์™€ ๋ฃจํŠธ ํด๋”์˜ index ์กด์žฌ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค
โ€”key-v2booleanv2 ์•”ํ˜ธํ™” ์‚ฌ์šฉ
โ€”package-jsonstring๋ชจ๋…ธ๋ ˆํฌ์˜ package.json ํŒŒ์ผ ๊ฒฝ๋กœ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„)