์ฐธ๊ณ : Vite๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ์ด์ ์ ๋ธ๋ผ์ฐ์ ๋ ์์ค ๋ชจ๋์ ๋ธ๋ผ์ฐ์ ์์ ์คํํ ์ ์๋ ํ์ผ๋ก ํฌ๋กค๋ง, ์ฒ๋ฆฌ ๋ฐ ์ฐ๊ฒฐํ๋ "๋ฒ๋ค๋ง(Bundling)" ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ JavaScript ๋ชจ๋ํ๋ฅผ ์งํํ์๋ค.Webpack, Rollup, Parcel ๊ณผ ๊ฐ์ ๋๊ตฌ
์ฐธ๊ณ | ๊น์ Detached HEAD git push๊ฐ ์ ๋ ๋ / detached HEAD ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ \[Git/๋ฒ์ญ] Detached HEAD๐คฏ storybook์ ๊ณต๋ถํ๋๋ผ ๋ ํฌ๋ฅผ ์์ฑํ๊ณ ์ธํธ๋ก๋ฅผ ๋ณด๋ฉฐ ๋ฐ๋ผํ๋ ๋์ค ๊ฐ์๊ธฐ push๊ฐ ๋์ง ์๊ณ
์ฐธ๊ณ | \[DOM ๋ค๋ฃจ๊ธฐ] template ํ๊ทธ ์ด์ฉCracking Vue.js(https://joshua1988.github.io/vue-camp/reuse/slots.htmlํ์ด์ง๋ฅผ ๋ถ๋ฌ์จ ์๊ฐ ์ฆ์ ๊ทธ๋ ค์ง์ง๋ ์์ ์ค์ ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด ์ด๋๊ฐ ๋ถ
Storybook ๋ด Vue ์ปดํฌ๋ํธ์ ๋ฌธ๋ฒ ๊ตฌ์กฐ๋ฅผ ํ์ ํ๋ ์ค React์์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ฌด์์ธ์ง ์์๋ณด๊ฒ ๋์๋ค. (React๋ง ๊ณต๋ถํด๋ณด๊ณ Vue์ ๋ํด์๋ ์ฒ์ ์ ํด๋ณด๋ ์ํ)๐ Vue : ํ ํ๋ฆฟ(Template), ์คํฌ๋ฆฝํธ(Script), ์คํ์ผ(Style)๋ก
Storybook ์ StyledButton.stories.js ํ์ผ์์ ์ฝ๋๋ฅผ ์ง๋ค๊ฐ ๋ฐ์ํ ์ค๋ฅ ๋ฉ์ธ์ง์ ๋ํ ํธ๋ฌ๋ธ ์ํ ๊ธฐ๋ก.Storybook์ stories.js ํ์ผ์์ ์ฝ๋๋ฅผ ์ง๋ค๊ฐ ์๋ฌด๋ฆฌ ๋ด๋ ์ค๋ฅ๊ฐ ์ ๋ณด์ด๋๋ฐ ๋ฌธ๋ฒ ์ค๋ฅ๋ผ๊ณ ํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ ๋ฉ์ธ
Storybook์์ ์ฌ์ฉํ๋ args ์ค์ ํน์ args(props)๋ง ์ ์ธํ๊ณ ๋๋จธ์ง๋ disableํ๊ณ ์ถ์๋๋ฐ, ๋์ผ ์ฝ๋๊ฐ ๊ณ์ ๋ฐ๋ณต๋๊ณ ์์ด์ ๋์ฑ ์์๋ณด๊ธฐ ์ฝ๊ณ ๊ฐ๋ตํ๊ฒ ์ถ์ํํด๋ณด๊ณ ์ ํจ.StyledButton ์ด๋ผ๋ UI ์์๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ storybo
์ฐธ๊ณ | Automate Chromatic with GitHub Actions์ํฌ์๋ฒ๊ฐ๋ฐํ์ GitHub Actions ์ ์ฉ๊ธฐGithub Actions์ผ๋ก ๋ฐฐํฌ ์๋ํํ๊ธฐ React-Storybook์ Chromatic์ผ๋ก ๋ฐฐํฌํ๋ ๊ณผ์ ์์ CI ๋๊ตฌ๋ก์จ GitHu
storybook ์ฝ๋๋ฅผ ์์ฑํ๋ ์ค, stories ํ์ผ๊ณผ styled ์ปดํฌ๋ํธ ๊ฐ์ prop๋ค์ ์ธ์๋ก ์ฃผ๊ณ ๋ฐ๋ ๊ฐ๋ ์ด ํท๊ฐ๋ ค์ ํ์คํ๊ฒ ์ฌ์ ๋ฆฝ ํด๋ณด๊ณ ์ ๊ตฌ์กฐ๋ถํดํ ๋น์ ๋ํ ๊ฐ๋ ์ ๋ค์ ์์๋ณด๊ฒ ๋์๋ค.์ฐธ๊ณ | https://velog.io/@soral2
Vue-vite ํ๋ ์์ํฌ๋ก ์์ฑ๋ UI ์ปดํฌ๋ํธ๋ค์ React-vite์ผ๋ก ๋ณํ ํ, storybook์ composition ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ multi-frameworks์ ๋จ์ผ ๋ ํฌ์ ๊ด๋ฆฌํ ์ ์๋๋ก ๊ณ ๋ฏผํด๋ณธ ๊ณผ์ ๊ธฐ๋ก.Bitbucket vue-storyboo
vue์ react storybook์ ๋์์ ๊ด๋ฆฌํ๋ ๊ณผ์ ์ ์์ด์ storybook-root ์ package.json ํ์ผ์ script ๋ถ๋ถ์ ์ฝ๋๋ฅผ ์ ๋ ฅํด์ ๋ช ๋ น์ด๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋ณด๊ณ package.json์ ๋ํด ์ข ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์์๋ณด๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋
Storybook ์ผ๋ก StyledRadio๋ฅผ ๋ง๋ค๊ณ ์๋ ์์ค, docgenInfo ๋ก props ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค๋ ค๊ณ ํ์ผ๋ props ๊ฐ ์๋ค!? ์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ๊ธฐ๋ก. > ์ ์๊พธ props๋ฅผ ์ธ์ ๋ชปํ์ง? StyledRadio.stories.js
React-Storybook์ Chromatic์ผ๋ก ๋ฐฐํฌํ๋ ๊ณผ์ ์์ CI ๋๊ตฌ๋ก์จ GitHub Actions๋ฅผ ์ฐ๊ธฐ๋ ํ๋ ๊ฒ์ ์๊ฒ ๋์๊ณ , Chromatic๊ณผ storybook docs ๋ด์ ์๋ actions ์ฝ๋๋ฅผ ๊ทธ๋๋ก ๋ณต๋ถํ๋ ์๊พธ ์ค๋ฅ๊ฐ ๋๊ฒ ๋์ด ๊ตฌ์ฒด์
์ฐํ ์ฝ ํ๋ฆฌ์ฝ์ค 1์ฃผ์ฐจ ๊ณผ์ ๋ฅผ ํ๋ค๊ฐ ํ ์คํธ ์ฝ๋์ App.js ๋ด async play() ๊ฐ ํ๋ ์ญํ ์ด ๋ฌด์์ด๋ฉฐ, ์ด ๋ ์ฌ์ด์ ๊ด๊ณ์ฑ์ ๋ญ๊น๋ฅผ ์์๋ณด๊ธฐ ์ํด Jest์ ๋ํด์ ๊ฒ์ํด๋ณด๊ฒ ๋์๋ค.์ฐธ๊ณ | Jest๋ฅผ ์ด์ฉํ Unit Testjest ๋ก api unit
์ด๋ฒ ์ฐํ ์ฝ ํ๋ฆฌ์ฝ์ค 1์ฃผ์ฐจ ๊ณผ์ ๋์ Jest์ ํ ์คํธ์ฝ๋์ ๋ํด ์ฒ์ ์ ํด๋ณด๊ฒ ๋์๋ค. ๊ณผ์ ์์ ์ฃผ์ด์ง ํ ์คํธ ์ฝ๋ ๋ด์ฉ์ ์ดํดํด๋ณด๊ณ ์ ํ ์ค์ฉ ๋ฏ์ด๋ณด๊ธฐ๋ก ํจ.async์ await์ JavaScript์์ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ์ฌ์ฉ๋๋ ํค์๋์ด๋ค. ์ด๋ค์ ๋น๋
๊ตฌ๊ธ ํฌ๋กฌ ์ต์คํ ์ ๊ฐ๋ฐ์ ์ํด ๋ค์ ์ฐธ๊ณ ๊ธ์ ํ๋ ํ๋ฉฐ ํ๊ธฐํ ๊ธ์ ๋๋ค.์ฐธ๊ณ | ํฌ๋กฌ ์ต์คํ ์ ๊ฐ๋ฐ๊ธฐ (feat.Manifest V3) - ์์ฑํ๋๊ตฌ๊ธ ํฌ๋กฌ ์ต์คํ ์ ์ ๊ฐ๋ฐํ๊ธฐ ์ํด์๋ manifest.json ํ์ผ์ด ํ์์ธ๋ฐ, ์ด ํ์ผ์๋ package.json ์ฒ
Chrome Extension ํํ ๋ฆฌ์ผ ๋ฐ๋ผํ๊ธฐ (1)์ฐธ๊ณ | Hello Extensions๋ฃจํธ ๋๋ ํ ๋ฆฌ์ manifest.json ํ์ผ์ด ๋ฐฐ์น๋์ด ์๋ ๊ฒ์ ํ์ธํ๋ฉด ๋๋ค.action : ํ์ฅ ํ๋ก๊ทธ๋จ์ ์์ ์์ด์ฝ์ผ๋ก ์ฌ์ฉํด์ผ ํ๋ ์ด๋ฏธ์ง (default_icon)
Chrome Extension ํํ ๋ฆฌ์ผ ๋ฐ๋ผํ๊ธฐ (2)์ฐธ๊ณ | Reading Time: ํจํด ๋งค์นญ ์ผ๋ก, ํน์ ํจํด์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ฑฐ๋ ์ถ์ถํ๋ ๊ธฐ๋ฅ์ ํ๋ค. <scheme>://<host>/<path> ์ ๊ตฌ์กฐ๋ฅผ ๋๋ค.<scheme> : ์ด์ค
| VanillaJS ๋ฅผ ์ด์ฉํด์ ๊ฐ๋จํ ํฌ๋๋ฆฌ์คํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ ๊ธฐ๋ก index.html index.js ํ ์ค์ฉ ๋ฏ์ด๋ณด๊ธฐ DOMContentLoaded ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์น ํ์ด์ง์ DOM์ด ์์ ํ ๋ก๋๋๊ณ ํ์ฑ๋์์ ๋ ์คํ๋์ด์ผ ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ์ธ๋ ๋ฐ ์ฌ
Nextjs๋ฅผ ์ฌ์ฉํ ํ๋ก์ ํธ๋ฅผ ์์ฑ ์ค, ์์ดํฐ 15 ํ๋ก ํฌ๊ธฐ์ ๋ง์ถฐ ๊ฐ๋ฐํ๊ธฐ ์ํ ์ ์ญ ์คํ์ผ๋ง ์ค์ ์ด ํ์ํด์ ์ฐพ์๋ณด๋ค๊ฐ ์ ๋ฆฌํ๋ ๊ธ (๐ styles > globals.css)Next.js 12 ์ด์์์ app ํด๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, app ํด๋ ๋ด \_app