ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ค์ํ ๋ฐฐํฌ ์ ๋ต์ ํ์ํ์ฌ, ์ ์ธ๊ณ์ ๋ถ์ฐ๋ ํ๊ณผ ํ๋ก์ ํธ ์ ๋ฐ์ ๊ฑธ์ณ ์ํํ ํ์ ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋ณด์ฅํฉ๋๋ค.
ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ: ๊ธ๋ก๋ฒ ํ์ ์ํ ๋ฐฐํฌ ์ ๋ต
์ค๋๋ ๊ณผ ๊ฐ์ด ์ ์ธ๊ณ๊ฐ ์ฐ๊ฒฐ๋ ์ธ์์์ ํ๋ก ํธ์๋ ๊ฐ๋ฐํ์ ์ข ์ข ์ฌ๋ฌ ์ง์ญ, ์๊ฐ๋, ์ฌ์ง์ด๋ ๋ค๋ฅธ ์กฐ์ง์ ๊ฑธ์ณ ๋ถ์ฐ๋์ด ์์ต๋๋ค. ์ ์ ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด๋ ๊ฒ ๋ค์ํ ํ๋ค ์ฌ์ด์์ ์ผ๊ด์ฑ, ์ฌ์ฌ์ฉ์ฑ ๋ฐ ํจ์จ์ฑ์ ์ ์งํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ๊ฐ ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฑ๊ณต์ ์ค๊ณ์ ๊ตฌํ๋ฟ๋ง ์๋๋ผ ๋ฐฐํฌ ์ ๋ต์ ๋ฌ๋ ค ์์ต๋๋ค. ์ด ๊ธ์์๋ ๋ค์ํ ์กฐ์ง ๊ตฌ์กฐ์ ํ๋ก์ ํธ ์๊ตฌ์ ๋ง๋ ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ๋ฌ ๋ฐฐํฌ ์ ๋ต์ ์ดํด๋ด ๋๋ค.
์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐฐํฌํด์ผ ํ๋ ์ด์
๋ฐฐํฌ ์ ๋ต์ ์ธ๋ถ ์ฌํญ์ ์ดํด๋ณด๊ธฐ ์ ์, ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๋ ๊ฒ์ ์ฃผ์ ์ด์ ๊ณผ ํจ๊ณผ์ ์ธ ๋ฐฐํฌ์ ์ค์์ฑ์ ๋ค์ ํ๋ฒ ๊ฐ์กฐํ๊ฒ ์ต๋๋ค:
- ์ผ๊ด์ฑ: ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํ๋ซํผ์์ ์ผ๊ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํฉ๋๋ค.
- ์ฌ์ฌ์ฉ์ฑ: ํ์ด ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ์ค์ผ ์ ์์ต๋๋ค.
- ์ ์ง๋ณด์์ฑ: ์ปดํฌ๋ํธ ์ ์๋ฅผ ์ค์์์ ๊ด๋ฆฌํ์ฌ ์ ์ง๋ณด์์ ์ ๋ฐ์ดํธ๋ฅผ ๋จ์ํํฉ๋๋ค.
- ํ์ฅ์ฑ: ์กฐ์ง์ด ์ฑ์ฅํจ์ ๋ฐ๋ผ ํ๋ก ํธ์๋ ์ํคํ ์ฒ๋ฅผ ํ์ฅํ๊ธฐ ์ฉ์ดํฉ๋๋ค.
- ํ์ : ๋์์ด๋์ ๊ฐ๋ฐ์ ๊ฐ์ ๋ ๋์ ํ์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ๋์์ธ ์์คํ ๊ตฌํ: ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋์์ธ ์์คํ ์ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ์ฒด๋ก์, ์๊ฐ์ ๊ฐ์ด๋๋ผ์ธ์ ์ค์ง์ ์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋๋ก ๋ณํํฉ๋๋ค.
์ ์ ํ ๋ฐฐํฌ ์ ๋ต์ด ์๋ค๋ฉด ์ด๋ฌํ ์ด์ ๋ค์ ํฌ๊ฒ ์ค์ด๋ญ๋๋ค. ํ๋ค์ ๊ธฐ์กด ์ปดํฌ๋ํธ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ์ฌ์ฉํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ ์ ์์ผ๋ฉฐ, ์ด๋ ๋ ธ๋ ฅ์ ์ค๋ณต๊ณผ ๋ถ์ผ์น๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ๊ฒฌ๊ณ ํ ๋ฐฐํฌ ์ ๋ต์ ๋ชจ๋ ๊ด๋ จ ์ดํด๊ด๊ณ์๊ฐ ์ปดํฌ๋ํธ์ ์ฝ๊ฒ ์ ๊ทผํ๊ณ , ๋ฐ๊ฒฌํ๋ฉฐ, ์ต์ ์ํ๋ก ์ ์งํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
์ผ๋ฐ์ ์ธ ๋ฐฐํฌ ์ ๋ต
๋ค์์ ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํ ๋ช ๊ฐ์ง ์ธ๊ธฐ ์๋ ๋ฐฐํฌ ์ ๋ต์ด๋ฉฐ, ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค:
1. npm ํจํค์ง (๊ณต๊ฐ ๋๋ ๋น๊ณต๊ฐ)
์ค๋ช : ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ ์ด์์ npm ํจํค์ง๋ก ๊ฒ์ํ๋ ๊ฒ์ ๋๋ฆฌ ์ฑํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ์ด๋ ๊ธฐ์กด npm ์ํ๊ณ๋ฅผ ํ์ฉํ์ฌ ์ค์น, ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ์ข ์์ฑ ๊ด๋ฆฌ๋ฅผ ์ํ ์ต์ํ ๋๊ตฌ์ ์ํฌํ๋ก์ฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ํจํค์ง๋ฅผ ๊ณต๊ฐ npm ๋ ์ง์คํธ๋ฆฌ์ ๊ฒ์ํ๊ฑฐ๋ ๋ด๋ถ ์ฌ์ฉ์ ์ํด ๋น๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ(์: npm Enterprise, Verdaccio, Artifactory)์ ๊ฒ์ํ ์ ์์ต๋๋ค.
์ฅ์ :
- ํ์คํ: npm์ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ค ํจํค์ง ๋งค๋์ ์ด๋ฏ๋ก ๊ด๋ฒ์ํ ํธํ์ฑ๊ณผ ์น์ํจ์ ๋ณด์ฅํฉ๋๋ค.
- ๋ฒ์ ๊ด๋ฆฌ: npm์ ๊ฐ๋ ฅํ ๋ฒ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์ปดํฌ๋ํธ์ ์ข ์์ฑ์ ์ฌ๋ฌ ๋ฒ์ ์ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋๋ค.
- ์ข ์์ฑ ๊ด๋ฆฌ: npm์ ์ข ์์ฑ ํด๊ฒฐ์ ์๋์ผ๋ก ์ฒ๋ฆฌํ์ฌ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ๋ฌ ํ๋ก์ ํธ์ ํตํฉํ๋ ๊ณผ์ ์ ๋จ์ํํฉ๋๋ค.
- ๋์ ์ฑํ๋ฅ : ๋ง์ ๊ฐ๋ฐ์๋ค์ด ์ด๋ฏธ npm๊ณผ ๊ทธ ์ํฌํ๋ก์ฐ์ ์ต์ํฉ๋๋ค.
- ๊ณต๊ฐ ๊ฐ๋ฅ(์ ํ ์ฌํญ): ๊ณต๊ฐ npm ๋ ์ง์คํธ๋ฆฌ์ ๊ฒ์ํ์ฌ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ธ๊ณ์ ๊ณต์ ํ ์ ์์ต๋๋ค.
๋จ์ :
- ์ ์ฌ์ ๋ณต์ก์ฑ: ์ฌ๋ฌ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ํนํ ๋๊ท๋ชจ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฝ์ฐ ๋ณต์กํด์ง ์ ์์ต๋๋ค.
- ์ค๋ฒํค๋: npm ํจํค์ง๋ฅผ ์์ฑํ๊ณ ๊ฒ์ํ๋ ๋ฐ๋ ์ฝ๊ฐ์ ์ด๊ธฐ ์ค์ ๊ณผ ์ง์์ ์ธ ์ ์ง๋ณด์๊ฐ ํ์ํฉ๋๋ค.
- ๋ณด์ ๋ฌธ์ (๊ณต๊ฐ): ๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ์ ๊ฒ์ํ ๊ฒฝ์ฐ ์ทจ์ฝ์ ์ ํผํ๊ธฐ ์ํด ๋ณด์์ ์ธ์ฌํ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
์์:
์๋ฅผ ๋ค์ด, `my-component-library`๋ผ๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ npm์ ๊ฒ์ํ ์ ์์ต๋๋ค:
npm login
npm publish
๊ทธ๋ฌ๋ฉด ๊ฐ๋ฐ์๋ค์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ ์ ์์ต๋๋ค:
npm install my-component-library
๊ณ ๋ ค์ฌํญ:
- ๋ชจ๋ ธ๋ ํฌ vs. ํด๋ฆฌ๋ ํฌ: ์ ์ฒด ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋จ์ผ ์ ์ฅ์(๋ชจ๋ ธ๋ ํฌ)์์ ๊ด๋ฆฌํ ์ง, ์๋๋ฉด ์ฌ๋ฌ ์ ์ฅ์(ํด๋ฆฌ๋ ํฌ)๋ก ๋ถํ ํ ์ง ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ๋ชจ๋ ธ๋ ํฌ๋ ์ข ์์ฑ ๊ด๋ฆฌ์ ์ฝ๋ ๊ณต์ ๋ฅผ ๋จ์ํํ๋ ๋ฐ๋ฉด, ํด๋ฆฌ๋ ํฌ๋ ๊ฐ ์ปดํฌ๋ํธ์ ๋ํด ๋ ํฐ ๊ฒฉ๋ฆฌ์ ๋ ๋ฆฝ์ ์ธ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋น๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ ์ ํ: ๋น๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์กฐ์ง์ ํ์์ ์์ฐ์ ๋ฐ๋ผ ๋ค์ํ ์ต์ ์ ์ ์คํ๊ฒ ํ๊ฐํด์ผ ํฉ๋๋ค.
- ์ค์ฝํ ํจํค์ง: ์ค์ฝํ ํจํค์ง(์: `@my-org/my-component`)๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณต๊ฐ npm ๋ ์ง์คํธ๋ฆฌ์์์ ์ด๋ฆ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ ํจํค์ง๋ฅผ ๋ ์ฒด๊ณ์ ์ผ๋ก ๊ตฌ์ฑํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
2. ๋ด๋ถ ํจํค์ง ๊ด๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ธ๋ ํฌ
์ค๋ช : ๋ชจ๋ ธ๋ ํฌ(๋จ์ผ ์ ์ฅ์)๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๊ด๋ จ ํ๋ก์ ํธ์ ๋ชจ๋ ์ฝ๋๋ฅผ ๋ด๊ณ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ผ๋ฐ์ ์ผ๋ก Lerna๋ Yarn Workspaces์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ข ์์ฑ์ ๊ด๋ฆฌํ๊ณ ๋ด๋ถ์ ์ผ๋ก ํจํค์ง๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ด ์ ๋ต์ ์ฝ๋๋ฒ ์ด์ค์ ๋ํ ์๊ฒฉํ ํต์ ๊ฐ ํ์ํ๊ณ ์ปดํฌ๋ํธ๋ค์ด ๊ธด๋ฐํ๊ฒ ์ฐ๊ฒฐ๋ ์กฐ์ง์ ์ ํฉํฉ๋๋ค.
์ฅ์ :
- ๋จ์ํ๋ ์ข ์์ฑ ๊ด๋ฆฌ: ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ๋์ผํ ์ข ์์ฑ์ ๊ณต์ ํ๋ฏ๋ก ๋ฒ์ ์ถฉ๋์ ์ํ์ ์ค์ด๊ณ ์ ๊ทธ๋ ์ด๋๋ฅผ ๋จ์ํํฉ๋๋ค.
- ์ฝ๋ ๊ณต์ : ๋์ผํ ์ ์ฅ์ ๋ด์์ ์ปดํฌ๋ํธ ๊ฐ์ ์ฝ๋์ ์ ํธ๋ฆฌํฐ๋ฅผ ๊ณต์ ํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค.
- ์์์ ๋ณ๊ฒฝ: ์ฌ๋ฌ ์ปดํฌ๋ํธ์ ๊ฑธ์น ๋ณ๊ฒฝ ์ฌํญ์ ์์์ ์ผ๋ก ์ ์ฉํ ์ ์์ด ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ๋ ์ฌ์ด ํ ์คํธ: ๋ชจ๋ ์ปดํฌ๋ํธ์ ๋ํ ํตํฉ ํ ์คํธ๊ฐ ๋ ๊ฐ๋จํฉ๋๋ค.
๋จ์ :
- ์ ์ฅ์ ํฌ๊ธฐ: ๋ชจ๋ ธ๋ ํฌ๋ ๋งค์ฐ ์ปค์ง ์ ์์ผ๋ฉฐ, ์ด๋ ๋น๋ ์๊ฐ๊ณผ ๋๊ตฌ ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
- ์ ๊ทผ ์ ์ด: ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค์ ์ ๊ทผํ ์ ์์ผ๋ฏ๋ก ๋ชจ๋ ธ๋ ํฌ์์ ์ ๊ทผ ์ ์ด๋ฅผ ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
- ๋น๋ ๋ณต์ก์ฑ: ๋น๋ ๊ตฌ์ฑ์ด ๋ ๋ณต์กํด์ง ์ ์์ผ๋ฉฐ, ์ ์คํ ์ต์ ํ๊ฐ ํ์ํฉ๋๋ค.
์์:
Lerna๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํ ๋ชจ๋ ธ๋ ํฌ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. Lerna๋ ๋ชจ๋ ธ๋ ํฌ ๊ตฌ์กฐ๋ฅผ ๋ถํธ์คํธ๋ฉํ๊ณ , ์ข ์์ฑ์ ๊ด๋ฆฌํ๋ฉฐ, npm์ ํจํค์ง๋ฅผ ๊ฒ์ํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
lerna init
lerna bootstrap
lerna publish
๊ณ ๋ ค์ฌํญ:
- ๋๊ตฌ ์ ํ: ํ๋ก์ ํธ์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ Lerna, Yarn Workspaces, Nx ๋ฑ ๋ค์ํ ๋ชจ๋ ธ๋ ํฌ ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ์ ์คํ๊ฒ ํ๊ฐํด์ผ ํฉ๋๋ค.
- ์ ์ฅ์ ๊ตฌ์กฐ: ํ์๊ณผ ์ดํด๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด ๋ชจ๋ ธ๋ ํฌ๋ฅผ ๋ ผ๋ฆฌ์ ์ธ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
- ๋น๋ ์ต์ ํ: ๋น๋ ์๊ฐ์ ์ต์ํํ๊ณ ํจ์จ์ ์ธ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์ต์ ํํด์ผ ํฉ๋๋ค.
3. Bit.dev
์ค๋ช : Bit.dev๋ ๋ชจ๋ ํ๋ก์ ํธ์์ ๊ฐ๋ณ ์ปดํฌ๋ํธ๋ฅผ ๊ฒฉ๋ฆฌ, ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ๊ณต์ ํ ์ ์๊ฒ ํด์ฃผ๋ ์ปดํฌ๋ํธ ํ๋ธ์ ๋๋ค. ์ปดํฌ๋ํธ๋ฅผ ๋ฐ๊ฒฌํ๊ณ , ์ฌ์ฉํ๋ฉฐ, ํ์ ํ ์ ์๋ ์ค์ ์ง์ค์ ํ๋ซํผ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์ ์ฒด ํจํค์ง๋ฅผ ๊ฒ์ํ๋ ๊ฒ๋ณด๋ค ๋ ์ธ๋ถํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค.
์ฅ์ :
- ์ปดํฌ๋ํธ ์์ค ๊ณต์ : ์ ์ฒด ํจํค์ง๊ฐ ์๋ ๊ฐ๋ณ ์ปดํฌ๋ํธ๋ฅผ ๊ณต์ ํฉ๋๋ค. ์ด๋ ๋ ํฐ ์ ์ฐ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ์ค์ ์ง์ค์ ํ๋ซํผ: Bit.dev๋ ์ปดํฌ๋ํธ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ์ฌ์ฉํ๊ธฐ ์ํ ์ค์ ์ง์ค์ ํ๋ซํผ์ ์ ๊ณตํฉ๋๋ค.
- ๋ฒ์ ์ ์ด: Bit.dev๋ ์ปดํฌ๋ํธ ๋ฒ์ ์ ์๋์ผ๋ก ๊ด๋ฆฌํ์ฌ ์ฌ์ฉ์๊ฐ ํญ์ ์ฌ๋ฐ๋ฅธ ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ข ์์ฑ ๊ด๋ฆฌ: Bit.dev๋ ์ปดํฌ๋ํธ ์ข ์์ฑ์ ๊ด๋ฆฌํ์ฌ ํตํฉ ๊ณผ์ ์ ๋จ์ํํฉ๋๋ค.
- ์๊ฐ์ ๋ฌธ์ํ: ๊ฐ ์ปดํฌ๋ํธ์ ๋ํ ์๊ฐ์ ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
๋จ์ :
- ํ์ต ๊ณก์ : ์๋ก์ด ํ๋ซํผ๊ณผ ์ํฌํ๋ก์ฐ๋ฅผ ๋ฐฐ์์ผ ํฉ๋๋ค.
- ์ ์ฌ์ ๋น์ฉ: ํนํ ๋๊ท๋ชจ ํ์ด๋ ์กฐ์ง์ ๊ฒฝ์ฐ Bit.dev ์ฌ์ฉ์ ๋น์ฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
- ํ์ฌ ์๋น์ค ์์กด์ฑ: ํ์ฌ ์๋น์ค์ ์์กดํ๋ฏ๋ก ์ ์ฌ์ ์ธ ์ฅ์ ์ง์ ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์์:
Bit.dev๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Bit CLI๋ฅผ ์ค์นํ๊ณ , ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ ๋ค์, `bit add` ๋ฐ `bit tag` ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ๊ฒฉ๋ฆฌ, ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ๊ณต์ ํด์ผ ํฉ๋๋ค.
bit init
bit add src/components/Button
bit tag 1.0.0
bit export my-org.my-component-library
๊ณ ๋ ค์ฌํญ:
- ์ปดํฌ๋ํธ ๊ฒฉ๋ฆฌ: Bit.dev์์ ๊ณต์ ํ๊ธฐ ์ ์ ์ปดํฌ๋ํธ๊ฐ ์ ์ ํ ๊ฒฉ๋ฆฌ๋๊ณ ๋ ๋ฆฝ์ ์ธ์ง ํ์ธํด์ผ ํฉ๋๋ค.
- ๋ฌธ์ํ: ๊ฐ ์ปดํฌ๋ํธ์ ์ฌ์ฉ์ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ๋ฌธ์๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.
- ํ ํ์ : ํ์๋ค์ด Bit.dev์์ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ์ฌํ๊ณ ์ ์ง๋ณด์ํ๋๋ก ์ฅ๋ คํด์ผ ํฉ๋๋ค.
4. ๋ด๋ถ ๋ฌธ์ ์ฌ์ดํธ
์ค๋ช : ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ ์ฉ ๋ฌธ์ ์ฌ์ดํธ(Storybook, Styleguidist ๋๋ ๋ง์ถคํ ์๋ฃจ์ ๊ณผ ๊ฐ์ ๋๊ตฌ ์ฌ์ฉ)๋ฅผ ๋ง๋ญ๋๋ค. ์ด ์ฌ์ดํธ๋ ๊ฐ ์ปดํฌ๋ํธ์ ๋ชฉ์ , ์ฌ์ฉ๋ฒ, ์์ฑ ๋ฑ์ ํฌํจํ ์ ๋ณด์ ์ค์ ์ ์ฅ์ ์ญํ ์ ํฉ๋๋ค. ์ง์ ์ ์ธ ๋ฐฐํฌ ๋ฉ์ปค๋์ฆ์ ์๋์ง๋ง, ์์์ ์ธ๊ธํ ๋ฐฉ๋ฒ๋ค์ ๋ฐ๊ฒฌ ๊ฐ๋ฅ์ฑ๊ณผ ์ฑํ์ ์ํด ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ฅ์ :
- ์ค์ ์ง์ค์ ๋ฌธ์: ์ปดํฌ๋ํธ ์ ๋ณด์ ๋ํ ๋จ์ผ ์ ๋ณด ์์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋ํํ ์์ : ๊ฐ๋ฐ์๋ค์ด ์ปดํฌ๋ํธ์ ์ํธ ์์ฉํ๊ณ ๋ค์ํ ๋งฅ๋ฝ์์ ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ณผ ์ ์๊ฒ ํด์ค๋๋ค.
- ํฅ์๋ ๋ฐ๊ฒฌ ๊ฐ๋ฅ์ฑ: ๊ฐ๋ฐ์๋ค์ด ์ปดํฌ๋ํธ๋ฅผ ๋ ์ฝ๊ฒ ์ฐพ๊ณ ์ดํดํ ์ ์๊ฒ ๋ง๋ญ๋๋ค.
- ํฅ์๋ ํ์ : ์ปดํฌ๋ํธ์ ๋ํ ๊ณต๋์ ์ดํด๋ฅผ ์ ๊ณตํ์ฌ ๋์์ด๋์ ๊ฐ๋ฐ์ ๊ฐ์ ํ์ ์ ์ด์งํฉ๋๋ค.
๋จ์ :
- ์ ์ง๋ณด์ ์ค๋ฒํค๋: ๋ฌธ์๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๊ธฐ ์ํด ์ง์์ ์ธ ์ ์ง๋ณด์๊ฐ ํ์ํฉ๋๋ค.
- ์ ํ๋ ๊ธฐ๋ฅ: ์ฃผ๋ก ๋ฌธ์ํ์ ์ค์ ์ ๋๋ฉฐ ๋ด์ฅ๋ ๋ฒ์ ๊ด๋ฆฌ๋ ์ข ์์ฑ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
์์:
Storybook์ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๊ณ ๋ฌธ์๋ฅผ ์์ฑํ๋ ๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋๊ตฌ์ ๋๋ค. ๊ฐ ์ปดํฌ๋ํธ์ ๋ํ ๋ํํ ์คํ ๋ฆฌ๋ฅผ ๋ง๋ค์ด ๋ค์ํ ์ํ์ ์์ฑ์ ๋ณด์ฌ์ค ์ ์์ต๋๋ค.
npx storybook init
๊ณ ๋ ค์ฌํญ:
- ๋๊ตฌ ์ ํ: ํ๋ก์ ํธ ์๊ตฌ์ฌํญ์ ๋ถํฉํ๊ณ ๊ธฐ์กด ์ํฌํ๋ก์ฐ์ ์ ํตํฉ๋๋ ๋ฌธ์ํ ๋๊ตฌ๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
- ๋ฌธ์ ํ์ง: ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ๋ฉฐ ์ดํดํ๊ธฐ ์ฌ์ด ๊ณ ํ์ง ๋ฌธ์๋ฅผ ๋ง๋๋ ๋ฐ ํฌ์ํด์ผ ํฉ๋๋ค.
- ์ ๊ธฐ์ ์ธ ์ ๋ฐ์ดํธ: ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ต์ ๋ณ๊ฒฝ ์ฌํญ์ผ๋ก ๋ฌธ์๋ฅผ ํญ์ ์ต์ ์ํ๋ก ์ ์งํด์ผ ํฉ๋๋ค.
5. Git ์๋ธ๋ชจ๋/์๋ธํธ๋ฆฌ (๊ถ์ฅํ์ง ์์)
์ค๋ช : Git ์๋ธ๋ชจ๋ ๋๋ ์๋ธํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจ์ํค๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ณต์กํ๊ณ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ๋์ ์ผ๋ฐ์ ์ผ๋ก ๋ ๊ถ์ฅ๋ฉ๋๋ค.
์ฅ์ :
- ์ง์ ์ ์ธ ์ฝ๋ ๊ณต์ : ์ ์ฅ์ ๊ฐ์ ์ง์ ์ ์ธ ์ฝ๋ ๊ณต์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋จ์ :
- ๋ณต์ก์ฑ: Git ์๋ธ๋ชจ๋๊ณผ ์๋ธํธ๋ฆฌ๋ ํนํ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ๊ด๋ฆฌํ๊ธฐ ๋ณต์กํ ์ ์์ต๋๋ค.
- ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ: ๋ถ์ผ์น์ ์ถฉ๋๋ก ์ด์ด์ง ์ ์๋ ์ค์๋ฅผ ํ๊ธฐ ์ฝ์ต๋๋ค.
- ์ ํ๋ ๋ฒ์ ๊ด๋ฆฌ: ๊ฐ๋ ฅํ ๋ฒ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
๊ณ ๋ ค์ฌํญ:
- ๋์: Git ์๋ธ๋ชจ๋/์๋ธํธ๋ฆฌ ๋์ npm ํจํค์ง๋ Bit.dev ์ฌ์ฉ์ ๊ณ ๋ คํ์ธ์.
์ฌ๋ฐ๋ฅธ ์ ๋ต ์ ํํ๊ธฐ
ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ฅ ์ ํฉํ ๋ฐฐํฌ ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ์์ธ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค:
- ํ ๊ท๋ชจ ๋ฐ ๊ตฌ์กฐ: ์๊ท๋ชจ ํ์ npm ํจํค์ง์ ๊ฐ์ ๊ฐ๋จํ ์ ๊ทผ ๋ฐฉ์์ด ์ ๋ฆฌํ ์ ์์ผ๋ฉฐ, ๋๊ท๋ชจ ์กฐ์ง์ ๋ชจ๋ ธ๋ ํฌ๋ Bit.dev๋ฅผ ์ ํธํ ์ ์์ต๋๋ค.
- ํ๋ก์ ํธ ๋ณต์ก์ฑ: ๋ ๋ณต์กํ ํ๋ก์ ํธ๋ ๊ฐ๋ ฅํ ๋ฒ์ ๊ด๋ฆฌ์ ์ข ์์ฑ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ถ ๋ ์ ๊ตํ ๋ฐฐํฌ ์ ๋ต์ด ํ์ํ ์ ์์ต๋๋ค.
- ๋ณด์ ์๊ตฌ์ฌํญ: ๋ณด์์ด ์ฃผ์ ๊ด์ฌ์ฌ๋ผ๋ฉด ๋น๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ๋ Bit.dev์ ๋น๊ณต๊ฐ ์ปดํฌ๋ํธ ๊ณต์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
- ์คํ์์ค vs. ์ฌ์ : ์คํ์์ค ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ, ๊ณต๊ฐ npm ๋ ์ง์คํธ๋ฆฌ์ ๊ฒ์ํ๋ ๊ฒ์ด ์ข์ ์ ํ์ ๋๋ค. ์ฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฝ์ฐ ๋น๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ๋ Bit.dev๊ฐ ๋ ์ ํฉํฉ๋๋ค.
- ๊ฒฐํฉ๋: ์ปดํฌ๋ํธ๋ค์ด ๊ธด๋ฐํ๊ฒ ๊ฒฐํฉ๋์ด ์๋์? ๋ชจ๋ ธ๋ ํฌ๊ฐ ์ข์ ์ ํ์ผ ์ ์์ต๋๋ค. ๋ ๋ฆฝ์ ์ธ๊ฐ์? Bit.dev๊ฐ ๋ ๋์ ์ ์์ต๋๋ค.
๋ฐฐํฌ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
์ ํํ ๋ฐฐํฌ ์ ๋ต๊ณผ ๊ด๊ณ์์ด ๋ฐ๋ผ์ผ ํ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ ์์ ๋ฒ์ ๊ด๋ฆฌ(Semantic Versioning): SemVer๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ ๋ณ๊ฒฝ ์ฌํญ์ ๊ด๋ฆฌํ์ธ์.
- ์๋ํ๋ ํ ์คํธ: ์ปดํฌ๋ํธ์ ํ์ง๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์๋ํ๋ ํ ์คํธ๋ฅผ ๊ตฌํํ์ธ์.
- ์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ(CI/CD): CI/CD ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํ์ฌ ๋น๋, ํ ์คํธ ๋ฐ ๊ฒ์ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ์ธ์.
- ๋ฌธ์ํ: ๊ฐ ์ปดํฌ๋ํธ์ ๋ํด ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ๋ฌธ์๋ฅผ ์ ๊ณตํ์ธ์.
- ์ฝ๋ ๋ฆฌ๋ทฐ: ์ฝ๋ ํ์ง๊ณผ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ ๊ธฐ์ ์ธ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํํ์ธ์.
- ์ ๊ทผ์ฑ: ์ปดํฌ๋ํธ๊ฐ ์ฅ์ ๋ฅผ ๊ฐ์ง ์ฌ์ฉ์์๊ฒ๋ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ๋ณด์ฅํ์ธ์. WCAG ๊ฐ์ด๋๋ผ์ธ์ ๋ฐ๋ฅด์ธ์.
- ๊ตญ์ ํ(i18n) ๋ฐ ํ์งํ(l10n): ๋ค์ํ ์ธ์ด์ ์ง์ญ์ ์ฝ๊ฒ ์ ์ํ ์ ์๋๋ก ์ปดํฌ๋ํธ๋ฅผ ์ค๊ณํ์ธ์.
- ํ ๋ง: ์ฌ์ฉ์๊ฐ ์ปดํฌ๋ํธ์ ์ธ๊ด์ ๋ง์ถค ์ค์ ํ ์ ์๋ ์ ์ฐํ ํ ๋ง ์์คํ ์ ์ ๊ณตํ์ธ์.
๊ฒฐ๋ก
ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ฐฐํฌํ๋ ๊ฒ์ ์ ์ธ๊ณ์ ๋ถ์ฐ๋ ํ ๊ฐ์ ์ฌ์ฌ์ฉ์ฑ, ์ผ๊ด์ฑ ๋ฐ ํ์ ์ ์ด์งํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ค์ํ ๋ฐฐํฌ ์ ๋ต์ ์ ์คํ๊ฒ ๊ณ ๋ คํ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด, ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์กฐ์ง์ ๊ท์คํ ์์ฐ์ด ๋๋๋ก ํ ์ ์์ต๋๋ค. ์ฑํ๊ณผ ์ ์ง๋ณด์์ฑ์ ์ฅ๋ คํ๊ธฐ ์ํด ๋ช ํํ ์ปค๋ฎค๋์ผ์ด์ ๊ณผ ๋ฌธ์ํ๋ฅผ ์ฐ์ ์ํ๋ ๊ฒ์ ์์ง ๋ง์ธ์. ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ์ ํํ๋ ๋ฐ๋ ์คํ์ด ํ์ํ ์ ์์ง๋ง, ์ฅ๊ธฐ์ ์ธ ์ด์ ์ ๊ทธ ๋ ธ๋ ฅ์ ์ถฉ๋ถํ ๊ฐ์น ์๊ฒ ๋ง๋ญ๋๋ค.