-
7. 디자인시스템 - svg 및 alias 설정Project/Figma+Storybook 2023. 11. 24. 11:29
1. svg 설정 (Component 형태로 사용가능하게)
1.1. storybook 설정
사전설치
$ yarn add --dev @svgr/webpack $ yarn add --dev url-loader
main.ts
# .storybook/main.ts import type { StorybookConfig } from '@storybook/react-webpack5'; import path from 'path'; ... const config: StorybookConfig = { ... // webpackFinal을 통해 Webpack 설정을 변경 webpackFinal: async (config) => { if (!config.module || !config.module.rules) { return config; } // TODO. 이거 추가해야 ReactComponent as ArrowRight 된다. config.module.rules = [ ...config.module.rules.map((rule) => { if (!rule || rule === '...') { return rule; } if (rule.test && /svg/.test(String(rule.test))) { return { ...rule, exclude: /\.svg$/i }; } return rule; }), { test: /\.svg$/, use: ['@svgr/webpack', 'url-loader'], // use: ['@svgr/webpack'], }, ]; ... return config; }, ... }
1.2. typescript 설정
tsconfig.json 수정
# tsconfig.json { ... // "include": ["src", "src/custom.d.ts"], "include": ["src"], "exclude": ["node_modules", "dist"], ... }
custom.d.ts 추가
# src/custom.d.ts declare module '*.mdx'; declare module '*.svg' { const ReactComponent: React.FC<React.SVGProps<SVGSVGElement>>; const content: string; export { ReactComponent }; export default content; }
1.3. rollup 설정
사전설치
$ yarn add --dev @svgr/rollup $ yarn add --dev rollup-plugin-image
rollup.config.mjs
# rollup.config.mjs ... import image from 'rollup-plugin-image'; // 이미지를 위한 플러그인 예시 import svgr from '@svgr/rollup'; import alias from '@rollup/plugin-alias'; ... export default [ { input: 'src/index.ts', output: [ { file: packageJson.main, format: 'cjs', sourcemap: true, }, { file: packageJson.module, format: 'esm', sourcemap: true, }, ], plugins: [ ... // 다른 플러그인들과 함께 이미지 및 SVG 플러그인을 추가 image(), svgr(), // SVG를 컴포넌트로 사용 할 수 있게 해줌. ... ], }, ... ];
2. Alias 설정
1.1. storybook 설정
main.ts
# main.ts import type { StorybookConfig } from '@storybook/react-webpack5'; import path from 'path'; const config: StorybookConfig = { ... // webpackFinal을 통해 Webpack 설정을 변경 webpackFinal: async (config) => { if (!config.module || !config.module.rules) { return config; } ... // alias 지정 config.resolve = config.resolve || {}; config.resolve.alias = { ...config.resolve.alias, '@components': path.resolve(__dirname, '../src/components'), '@assets': path.resolve(__dirname, '../src/assets'), }; return config; }, }; export default config;
1.2. typescript 설정
tsconfig.json 수정
# tsconfig.json { ... // alias 지정 "paths": { "@components/*": ["src/components/*"], "@assets/*": ["src/assets/*"] } }
1.3. rollup 설정
사전설치
$ yarn add --dev @rollup/plugin-alias
rollup.config.mjs
# rollup.config.mjs ... import alias from '@rollup/plugin-alias'; ... export default [ { input: 'src/index.ts', output: [ { file: packageJson.main, format: 'cjs', sourcemap: true, }, { file: packageJson.module, format: 'esm', sourcemap: true, }, ], plugins: [ ... // alias 지정 alias({ resolve: ['.ts', '.tsx', '.json', '.js', '.jsx'], entries: [ { find: /^@assets\/(.*)/, replacement: 'src/assets/$1', }, { find: /^@components\/(.*)/, replacement: 'src/components/$1', }, ], }), ... ], }, ... ];
'Project > Figma+Storybook' 카테고리의 다른 글
6. 디자인시스템 - 샘플 Component 제작 (0) 2023.11.20 5. 디자인시스템 - ESLint와 Prettier 설정 (0) 2023.11.17 4. 디자인시스템 - Storybook 및 Rollup scss 설정 (0) 2023.11.15 3. 디자인시스템 - npm에서 받아서 활용해보기 (0) 2023.11.13 2. 디자인시스템 - Storybook chromatic 배포 및 git 연동 (0) 2023.11.13