๐Ÿ“š

๋ชจ๋…ธ๋ ˆํฌ ํ…Œ์ผ์œˆ๋“œ ์ ์šฉ ์•ˆ๋จ

PPYOM๐ŸŒŸ 2024. 12. 23. 20:44
์ด ๊ธ€์€ ๋ชจ๋…ธ๋ ˆํฌ ํ”„๋กœ์ ํŠธ์— TailwindCSS๋ฅผ ์ ์šฉํ•˜๋˜ ์ค‘ ๊ฒช์€ ์ด์Šˆ์— ๋Œ€ํ•ด ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์š” ๐Ÿ“ƒ

๋ชจ๋…ธ๋ ˆํฌ์— ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ณ„๋„๋กœ ๋ถ„๋ฆฌ๋œ ํ”„๋กœ์ ํŠธ์— ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

packages/
  config/
    tailwind.config.ts
    postcss.config.mjs
    package.json
  types/
  ui/
    atom/
      Button/
        index.tsx
        stories.ts
    tailwind.config.ts
    package.json
webapps/
  admin/
    tailwind.config.ts
  storybook/
    tailwind.config.ts
  user/
    tailwind.config.ts
package.json
...
  • packages/config: ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋ชจ์•„๋‘” ํŒจํ‚ค์ง€
  • packages/types: ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํƒ€์ž…์„ ๋ชจ์•„๋‘” ํŒจํ‚ค์ง€
  • packages/ui: ์ปดํฌ๋„ŒํŠธ ๋ฐ ui์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋ชจ์•„๋‘” ํŒจํ‚ค์ง€
  • webapps/admin & webapps/user: ๊ด€๋ฆฌ์ž&์‚ฌ์šฉ์ž ํŽ˜์ด์ง€
  • webapps/storybook: ์Šคํ† ๋ฆฌ๋ถ

์ฒ˜์Œ์— ์ž‘์„ฑํ–ˆ๋˜ tailwind.config.ts๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// packages/config/tailwind.config.ts
import type { Config } from 'tailwindcss';

const config: Config = {
  content: [
    '../ui/**/*.{ts,tsx}',
    '../../webapps/admin/src/**/*.{ts,tsx}',
    '../../webapps/user/src/**/*.{ts,tsx}',
  ],
  theme: {
    extend: {
      // ...
    },
  },
  plugins: [],
};

export default config;
// webapps/admin/tailwind.config.ts
export { default } from '@packages/config/tailwind.config';

์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ–ˆ์„ ๋•Œ ์ œ๊ฐ€ ์ƒ๊ฐํ•œ ๊ฒฐ๊ณผ๋Š” config์˜ content์— ์ž‘์„ฑ๋œ ์ปดํฌ๋„ŒํŠธ์— ์Šคํƒ€์ผ์ด ์ ์šฉ๋˜์–ด์•ผ ํ–ˆ๋Š”๋ฐ ์ „ํ˜€ ์ ์šฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์›์ธ ๋ถ„์„ ๐Ÿ”

์™œ ์ ์šฉ์ด ๋˜์ง€ ์•Š์•˜๋‚˜ ํ™•์ธํ•ด๋ณด๋‹ˆ ํ„ฐ๋ฏธ๋„์— ‘content๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค.’ ๋ผ๋Š” ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณด๊ฒŒ ๋˜์—ˆ๊ณ , TailwindCSS๋Š” ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ธฐ์ค€์œผ๋กœ content๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์œ„์ฒ˜๋Ÿผ ์ž‘์„ฑํ•œ๋‹ค๋ฉด ์•„๋ฌด๋Ÿฐ ์Šคํƒ€์ผ๋„ ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ โœ…

์ตœ์ข…์ ์œผ๋กœ ์ €๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ์ˆ˜์ •ํ•ด ํ•ด๋‹น ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

// packages/config/tailwind.config.ts
import type { Config } from 'tailwindcss';

const config: Omit<Config, 'content'> = {
  theme: {
    extend: {
      // ...
    },
  },
  plugins: [],
};

export default config;
// webapps/admin/tailwind.config.ts
import config from '@packages/config/tailwind.config';

export default {
  content: ['./**/*.{ts,tsx}'],
  ...config,
};

 

728x90