0Pricing
Frontend Academy · 강의

Storybook: 스토리, 컨트롤 및 문서

각 컴포넌트 상태에 대한 스토리를 작성하고, Controls로 props를 대화형으로 조정하며, JSDoc과 argTypes에서 Docs 페이지를 생성합니다.

Storybook: 스토리, 컨트롤 및 문서은(는) CoddyKit의 무료 Frontend Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Frontend Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Frontend Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

Storybook이란?

Storybook은 앱과 격리된 UI 컴포넌트 작업 공간입니다. 각 컴포넌트를 다양한 상태에서 사용하는 예시인 '스토리'를 작성하고, 개발 서버에서 이를 탐색합니다. 디자인 시스템에 필수적인 도구입니다.

Storybook을 사용하는 이유

1) 앱의 컨텍스트를 설정하지 않고 컴포넌트를 격리된 상태에서 개발할 수 있습니다. 2) 모든 상태(로딩, 오류, 비어 있음)를 시각적으로 검토할 수 있습니다. 3) 디자이너와 제품 관리자가 카탈로그를 살펴볼 수 있습니다. 4) 문서를 생성합니다. 5) 시각적 회귀 테스트를 자동화합니다.

Storybook 설치하기

공식 초기화 도구를 사용하십시오. 프레임워크를 감지하고 모든 항목을 구성합니다.

npx storybook@latest init

# Adds:
#  .storybook/        config
#  src/stories/       example stories
#  scripts: 'storybook' and 'build-storybook'

npm run storybook   # opens http://localhost:6006

스토리 작성하기(CSF 3.0)

Component Story Format 3에서는 기본 내보내기가 메타데이터이고, 이름이 지정된 내보내기가 스토리입니다.

// Button.stories.tsx
import type { Meta, StoryObj } from '@storybook/react';
import { Button } from './Button';

const meta: Meta<typeof Button> = {
  title: 'Atoms/Button',
  component: Button,
  tags: ['autodocs']
};
export default meta;

type Story = StoryObj<typeof Button>;

export const Primary: Story = {
  args: { label: 'Save', variant: 'primary' }
};

export const Disabled: Story = {
  args: { label: 'Save', variant: 'primary', disabled: true }
};

컴포넌트별 여러 스토리

중요한 상태마다 하나의 스토리를 만드십시오. 기본 상태, 마우스를 올린 상태, 로딩, 오류, 비어 있음, 데이터가 채워진 상태를 포함합니다. 검토자는 이를 차례로 클릭하면서 모든 변형을 한눈에 확인할 수 있습니다.

export const Loading: Story = { args: { state: 'loading' } };
export const Error: Story    = { args: { state: 'error', message: 'Network failed' } };
export const Empty: Story    = { args: { items: [] } };
export const Populated: Story = { args: { items: mockItems } };

컨트롤(Args 표)

Storybook의 Controls 애드온은 args 객체를 대화형 폼 컨트롤로 변환합니다. UI에서 속성 값을 실시간으로 조정하여 예외 상황을 테스트할 수 있습니다.

const meta: Meta<typeof Button> = {
  component: Button,
  argTypes: {
    variant: {
      control: 'select',
      options: ['primary', 'secondary', 'danger']
    },
    onClick: { action: 'clicked' }
  }
};

Actions 애드온

action()을 사용하면 Actions 패널에 이벤트 처리기 호출을 기록할 수 있습니다. 실제 상태를 연결하지 않고 콜백을 테스트할 때 유용합니다.

argTypes: {
  onClick: { action: 'clicked' },
  onChange: { action: 'changed' }
}

Autodocs — 자동 생성 문서

메타데이터에 tags: ['autodocs']를 추가하면 Storybook이 컴포넌트의 속성 표, 설명, 렌더링 가능한 예시가 포함된 Docs 페이지를 생성합니다.

풍부한 문서를 위한 MDX

MDX로 컴포넌트 문서를 작성하십시오. MDX는 Markdown에 JSX를 삽입한 형식입니다. 설명문과 실제 동작하는 컴포넌트 예시를 함께 구성할 수 있습니다.

{/* Button.mdx */}
import { Meta, Story, Canvas } from '@storybook/blocks';
import * as ButtonStories from './Button.stories';

<Meta of={ButtonStories} />

# Button

The primary action element.

## Variants
<Canvas of={ButtonStories.Primary} />
<Canvas of={ButtonStories.Secondary} />

데코레이터 — 스토리를 컨텍스트로 감싸기

데코레이터를 사용하여 스토리를 공급자(Theme, Router, Redux)로 감쌉니다.

export const decorators = [
  (Story) => (
    <ThemeProvider theme={lightTheme}>
      <Story />
    </ThemeProvider>
  )
];

시각적 회귀 테스트

Storybook 팀이 만든 Chromatic은 모든 커밋에서 모든 스토리의 스크린샷을 찍고 기준 이미지와 비교합니다. 시각적 회귀를 자동으로 찾아냅니다.

Storybook 배포하기

npm run build-storybook은 storybook-static/에 정적 사이트를 생성합니다. Netlify, Vercel, GitHub Pages에 배포하면 개발자가 아닌 사람도 컴포넌트 카탈로그를 탐색할 수 있습니다.

빠른 확인

컴포넌트의 Storybook 메타데이터에 tags: ['autodocs']를 추가하면 무엇이 이루어집니까?

복습: Storybook

UI 컴포넌트를 위한 격리된 작업 공간입니다. CSF 3.0에서는 기본 내보내기가 meta이고 이름이 지정된 내보내기가 stories입니다. Controls에는 argTypes를 사용합니다. 콜백 기록에는 action()을 사용합니다. 자동 생성 문서에는 tags: ['autodocs']를 사용합니다. 풍부한 설명문과 JSX에는 MDX를 사용합니다. 데코레이터가 공급자를 주입합니다. 시각적 회귀에는 Chromatic을 사용합니다. 정적 호스팅에는 build-storybook을 사용합니다.

자주 묻는 질문

“Storybook: 스토리, 컨트롤 및 문서” 강의는 무료인가요?

네 — “Storybook: 스토리, 컨트롤 및 문서” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Frontend Academy 강의 전체를 잠금 해제할 수 있습니다. Frontend Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Storybook: 스토리, 컨트롤 및 문서”에서 뭘 배우나요?

각 컴포넌트 상태에 대한 스토리를 작성하고, Controls로 props를 대화형으로 조정하며, JSDoc과 argTypes에서 Docs 페이지를 생성합니다. 브라우저에서 직접 실행하는 실습 코드로 Frontend Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Frontend Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Frontend Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“Storybook: 스토리, 컨트롤 및 문서” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Frontend Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Frontend Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Storybook: 스토리, 컨트롤 및 문서
  2. Style Dictionary를 사용한 디자인 토큰
  3. npm 버전 관리 및 게시
  4. 디자인 시스템 사용하기
← Frontend Academy(으)로 돌아가기