์ด ํ์ด์ง์ ์ํ๋ AI ์ด์์คํดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ฅผ ์์ฝํฉ๋๋ค
์ด ๋ฌธ์๋ ์ค๋๋์์ต๋๋ค. ๊ธฐ๋ณธ ๋ฒ์ ์ด ๋ค์ ๋ ์ง์ ์ ๋ฐ์ดํธ๋์์ต๋๋ค: 2026๋ 6์ 25์ผ.
์๋ฌธ ๋ฌธ์๋ก ์ด๋๋ฒ์ ๊ธฐ๋ก
- "๋ฌธ์ ์ด๊ธฐํ"v8.0.02026. 1. 21.
์ด ํ์ด์ง์ ์ฝํ ์ธ ๋ AI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ญ๋์์ต๋๋ค.
์์ด ์๋ณธ ๋ด์ฉ์ ์ต์ ๋ฒ์ ์ ๋ณด๊ธฐ์ด ๋ฌธ์๋ฅผ ๊ฐ์ ํ ์์ด๋์ด๊ฐ ์์ผ์๋ฉด GitHub์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ์ฌ ์์ ๋กญ๊ฒ ๊ธฐ์ฌํด ์ฃผ์ธ์.
๋ฌธ์์ ๋ํ GitHub ๋งํฌ๋ฌธ์์ Markdown์ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
intlayerPrune Vite ํ๋ฌ๊ทธ์ธ ๋ฌธ์
intlayerPrune Vite ํ๋ฌ๊ทธ์ธ์ ์ ํ๋ฆฌ์ผ์ด์
๋ฒ๋ค์์ ์ฌ์ฉ๋์ง ์๋ ์ฌ์ (dictionary)์ ํธ๋ฆฌ ์์ดํนํ๊ณ ์ ๊ฑฐ(prune)ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ํ์ํ ๋ค๊ตญ์ด ์ฝํ
์ธ ๋ง ํฌํจ๋์ด ์ต์ข
๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ์ intlayer()๋ฅผ ์ฌ์ฉํ ๋ ์ด๋ฏธ ์๋์ผ๋ก ํฌํจ๋๊ณ ๊ตฌ์ฑ๋ฉ๋๋ค. ํ๋ฌ๊ทธ์ธ ์คํ์ ์ง์ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ์๋ง ์๋์ผ๋ก ๋ฑ๋กํ๋ฉด ๋ฉ๋๋ค.
์ฌ์ฉ๋ฒ
intlayer()์ ์ผ๋ถ๋ก (๊ถ์ฅ)
Intlayer config๋ฅผ ํตํด pruning์ ํ์ฑํํ๋ฉด main plugin์ด ๋ชจ๋ ๊ฒ์ ์ฒ๋ฆฌํฉ๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
Standalone
ํ๋ฌ๊ทธ์ธ ์คํ์ ์๋์ผ๋ก ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ, intlayerPrune๊ณผ intlayerMinify๋ ํ ๋ฒ ์์ฑํ๊ณ ๋ ๋ค์ ์ ๋ฌํด์ผ ํ๋ PruneContext ๊ฐ์ฒด๋ฅผ ๊ณต์ ํฉ๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ด๋ป๊ฒ ์๋ํ๋๊ฐ
1. Usage analysis (buildStart)
buildStart ์ค์ intlayerOptimize ํ๋ฌ๊ทธ์ธ(intlayer()์ ์ผ๋ถ)์ build.filesList์ ๋์ด๋ ๋ชจ๋ component ์์ค ํ์ผ์ ์ค์บํฉ๋๋ค. ๊ฐ useIntlayer('key') ๋๋ getIntlayer('key') ํธ์ถ์ ๋ํด, ์ ํํ ์ด๋ค ํ๋๊ฐ ์ก์ธ์ค๋๋์ง ๊ธฐ๋กํฉ๋๋ค. ์๋ฅผ ๋ค์ด:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ด๋ ๋ชจ๋ transform ํธ์ถ์ด ์คํ๋๊ธฐ ์ ์ pruneContext.fieldUsageMap์ ๊ตฌ์ฑํฉ๋๋ค.
2. JSON pruning (transform, enforce: 'pre')
Vite๊ฐ ์ปดํ์ผ๋ dictionary JSON ํ์ผ์ ์ฒ๋ฆฌํ ๋, intlayerPrune์ Vite์ built-in JSON โ ESM ๋ณํ ์ ์ ์ด๋ฅผ ๊ฐ๋ก์ฑ๋๋ค. pruneContext์์ field-usage map์ ์ฝ๊ณ ๊ธฐ๋ก๋ usage set์ ์๋ ๋ชจ๋ content field๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
๋ ๊ฐ์ง content shape์ด ์ง์๋ฉ๋๋ค:
- Static dictionaries โ
{ nodeType: "translation", translation: { en: {...}, fr: {...} } }. Fields๋translation๋ด์์ per-locale๋ณ๋ก pruned๋ฉ๋๋ค. - Dynamic (per-locale) dictionaries โ flat
{ fieldA: ..., fieldB: ... }. Fields๋ top level์์ pruned๋ฉ๋๋ค.
3. Edge cases
์ฌ์ ์ ์ฝํ
์ธ ๊ตฌ์กฐ๋ฅผ ์ธ์ํ ์ ์๋ ๊ฒฝ์ฐ(์: ๋น์ ์์ ์ธ ์ค์ฒฉ๋ ํํ), ์ด๋ pruneContext.dictionariesWithEdgeCases์ ์ถ๊ฐ๋๊ณ ๋ณ๊ฒฝ๋์ง ์์ ์ํ๋ก ์ ์ง๋ฉ๋๋ค. ๊ฒฝ๊ณ ๊ฐ ๊ธฐ๋ก๋ฉ๋๋ค. intlayerMinify๋ ์ด๋ฌํ ์ฌ์ ์ ๊ฑด๋๋๋๋ค.
4. Field-rename map
pruning์ด ์ฑ๊ณตํ๋ฉด, intlayerPrune์ pruneContext.dictionaryKeyToFieldRenameMap๋ ์์ฑํฉ๋๋ค. ์ด๋ ์๋ณธ ํ๋ ์ด๋ฆ์ ์งง์ ๋ณ์นญ์ผ๋ก ๋งคํํฉ๋๋ค. intlayerMinify๋ ์ด ๋งต์ ์ฝ์ด ์ถ๋ ฅ JSON์ ํ๋ ์ด๋ฆ์ ๋ณ๊ฒฝํ๊ณ , intlayerOptimize์ Babel rename pass๋ ์์ค ํ์ผ์ property ์ ๊ทผ์ ๊ทธ์ ๋ฐ๋ผ ์
๋ฐ์ดํธํฉ๋๋ค.
ํ์ฑํ ์กฐ๊ฑด
intlayerPrune์ ๋ค์์ ๋ชจ๋ ์กฐ๊ฑด์ด ์ฐธ์ผ ๋๋ง ํ์ฑํ๋ฉ๋๋ค:
- Vite ๋ช
๋ น์ด
build์ ๋๋ค. build.optimize๊ฐtrue์ ๋๋ค (๋๋undefined์ธ ๊ฒฝ์ฐ, ๋น๋์ ๋ํด ๊ธฐ๋ณธ๊ฐ์ดtrue์ ๋๋ค).- Intlayer ๊ตฌ์ฑ์์
build.purge๊ฐtrue์ ๋๋ค.
editor.enabled๊ฐ true์ผ ๋๋ ํ์ฑ ์ํ๋ฅผ ์ ์งํฉ๋๋ค. ๋น์ฃผ์ผ ์๋ํฐ๋ ๋ณํฉ๋์ง ์์ ์ฌ์ ์ ๋ํด dictionaryKey์ keyPath๋ฅผ ํตํด ๋ชจ๋ ํธ์ง์ ํด์ํ๋ฉฐ, ์ด ํ๋ฌ๊ทธ์ธ์ ํด๋น ์ฌ์ ์ ์ ํ ๊ฑด๋๋ฆฌ์ง ์์ต๋๋ค. ์ ๋ฆฌ๋ ํ๋๋ ์ด๋ค ์ปดํฌ๋ํธ๋ ์ฝ์ง ์๋ ํ๋์ด๋ฏ๋ก, ๋ ๋๋ง๋์ง๋ ํ์ด์ง์์ ์ ํ๋์ง๋ ์์ต๋๋ค.
