일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 코딩일기
- JavaScript
- HTML5
- 자바스크립트
- 오블완
- State
- 엔트리포인트
- Next.js
- 자료 구조
- 개발 회고
- 백준
- 세그먼트 트리
- 모던 자바스크립트 튜토리얼
- 프론트엔드
- 수학
- styled-components
- 기본 문법
- three.js
- 자바
- 회고
- 해시를 사용한 집합과 맵
- 시뮬레이션
- poiemaweb
- 브루트포스
- js
- REACT
- 토이 프로젝트
- 구현
- react-three/fiber
- 티스토리챌린지
Archives
- Today
- Total
코딩하는 고릴라
모노레포 프론트엔드 스토리북 적용하기 본문
반응형
컴포넌트의 상태 별 UI를 관리하기 위해 프로젝트에 스토리북을 적용해보기로 결정했습니다.
npx storybook@latest init
프로젝트의 루트 디렉토리에서 스토리북을 설치합니다.
위 명령어를 이용하면 루트 디렉토리에 .storybook 폴더와 stories 폴더가 생성됩니다.
프로젝트의 구조입니다. ui 패키지에 존재하는 컴포넌트를 blog, lab 서비스에서 가져다가 사용하는 방식입니다.
따라서 ui 패키지 내에 존재하는 컴포넌트들을 스토리북으로 관리해줘야 합니다.
import type { StorybookConfig } from '@storybook/nextjs';
import { join, dirname } from 'path';
/**
* This function is used to resolve the absolute path of a package.
* It is needed in projects that use Yarn PnP or are set up within a monorepo.
*/
function getAbsolutePath(value: string): any {
return dirname(require.resolve(join(value, 'package.json')));
}
const config: StorybookConfig = {
stories: [
'../stories/**/*.mdx',
'../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)',
'../packages/ui/src/*.stories.ts', // 스토리 경로 추가
],
addons: [
getAbsolutePath('@storybook/addon-onboarding'),
getAbsolutePath('@storybook/addon-links'),
getAbsolutePath('@storybook/addon-essentials'),
getAbsolutePath('@chromatic-com/storybook'),
getAbsolutePath('@storybook/addon-interactions'),
],
framework: {
name: getAbsolutePath('@storybook/nextjs'),
options: {},
},
};
export default config;
루트 디렉토리의 .storybook 폴더 내에 존재하는 main.ts 파일입니다.
config에서 stories에 ui 패키지 내 스토리가 저장될 경로를 추가로 추가해줍니다.
packages/ui/src 폴더 내에는 컴포넌트 파일인 tsx 파일과 스토리 파일인 stories.ts 파일이 공존하고 이를 바탕으로 스토리북을 활용할 수 있게 됩니다.
반응형
'Project > blog' 카테고리의 다른 글
blog 프로젝트 - 기획 (1) | 2024.06.13 |
---|