storybook은 컴포넌트를 독립적으로 개발할 수 있도록 도와주는 컴포넌트 관리 도구이다
storybook은 모든 개발자들이 필수적으로 사용하지는 않지만 사용한다면 확실히 개발자 경험을 향상시켜준다고 생각한다
storybook이 나오기 전에 사람들은 어떻게 컴포넌트를 개발하고 테스트했을까?
나와 내 친구들은 페이지에 컴포넌트를 띄워 직접 개발과 테스트를 했었다 하지만 이렇게 컴포넌트를 개발하고 테스트한다면 아래와 같은 단점들이 존재할 것이라고 생각한다
- 개발과 테스트를 페이지에 띄워 테스트하고 페이지에 띄우는 데 사용한 코드를 다시 지워야 한다
- 다른 사람이 테스트할 때도 따로 컴포넌트를 확인할 수 없어 위의 상황을 반복해야 한다
- 만약 컴포넌트가 상태에 따라 다르게 나타나 컴포넌트를 비교할 일이 생긴다면 위의 상황을 더 반복해야 한다
이러한 단점을 없애고 더 편하게 컴포넌트를 개발하고 테스트할 수 있게 도와주는 라이브러리가 바로 storybook이다
storybook 사용하기!
내가 설명하는 방법은 nextjs(app router) 프로젝트에서 storybook을 사용하는 방법이다 다른 라이브러리나 프레임워크를 사용한다면
storybook 공식문서를 참고하여 세팅해 보자(공식문서에는 다양한 프레임워크와 라이브러리에서 사용하는 법이 잘 나와있는 거 같다!)
+ 프로젝트에 storybook을 처음 적용한다면 storybook을 설치할 때 알아서 프레임워크를 감지해 프레임워크에 맞게끔 적용되는 거 같다
1. storybook 설치
nextjs 프로젝트에 아래의 명령어를 입력해 storybook을 설치하자!
npx storybook@latest init
or
pnpm dlx storybook@latest init
2. *.stories.tsx 만들기
storybook preview에 component를 보이게 하려면 *.stories.tsx 파일을 만들어야 한다
평소처럼 component를 만들고 *.stories.tsx 파일에 등록? 시켜주어야 한다
나는 간단하게 Button component를 만들었다
button.tsx
const Button = ({ color }: { color: string }) => {
return (
<button
onClick={() => {
console.log("clicked!");
}}
style={{ backgroundColor: color }}
>
click me!!
</button>
);
};
export default Button;
button.stories.tsx
import Button from "./button";
import { Meta, StoryObj } from "@storybook/react";
const meta: Meta<typeof Button> = {
component: Button,
args: {
color: "red",
},
};
export default meta;
type Story = StoryObj<typeof Button>;
export const Primary: Story = {};
export const BlueColor: Story = {
args: { color: "blue" },
};
실제 preview에는 Primary와 BlueColor로 컴포넌트가 보이게 된다
meta는 story의 meta 정보를 정의하는 데 사용된다
Button 컴포넌트는 color를 props로 받는데 storybook에서는 상태에 따른 여러가지 컴포넌트의 상태를 보여줄 수 있게 제공한다
BlueColor라는 Story 객체를 보면 args 객체 안에 Button 컴포넌트가 받을 props를 넣어줄 수 있다
이렇게 하면 Primary 상태와 BlueColor 상태일 때의 컴포넌트를 모두 볼 수 있기 때문에 예상 가능한 상태를 모두 보이게도 할 수 있다
마무리
오늘은 storybook에 대해 알아보고 세팅과 사용도 해봤다
storybook을 알기 전까지는 복잡한 방법으로 component를 확인하고 테스트 했었는데 storybook을 사용함으로써 훨씬 효율적으로 개발과 테스트가 가능해졌다 앞으로 개발을 할 때 없어서는 안될 존재가 된거 같다
'Library' 카테고리의 다른 글
제발 디자인 못하면 mui 쓰세요! - mui 사용기 (0) | 2024.06.21 |
---|---|
zod 쓸까? 말까? - zod를 알아보자 (0) | 2024.04.22 |
왜 js는 오류가 안뜨냐? - eslint에 대해 알아보자 (0) | 2024.04.11 |
??? : 너 오늘 zustand 안좋아 보여 - zustand 사용기 (0) | 2024.02.14 |
천재의 form 관리법 (0) | 2023.11.18 |