📝강의를 시청하면서 궁금한 점이 있거나, 질문 또는 의견을 남기고 싶다면? 페이지 하단(↓) "토론" 섹션에 남겨주세요.
# Storybook 설치 / 구성
# Storybook 설치
Create React App으로 설치/구성 된 React 프로젝트에 Storybook을 설치/구성합니다.
# React 앱 프로젝트 설치/초기화
npx create-react-app <프로젝트> --template ko
cd <프로젝트>
# Storybook 설치/초기화
npx sb init
npx sb@next upgrade
1
2
3
4
5
6
7
2
3
4
5
6
7
Storybook 업그레이드 명령
upgrade
명령을 사용해 추후 Storybook을 업그레이드 할 수 있습니다.
npx sb@next upgrade
1
설치 오류 해결 방법
Storybook 설치 & 초기화 실행 시 오류가 발생할 수도 있습니다.
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
1
2
2
오류가 발생한 경우, 아래 명령을 입력해 문제를 해결할 수 있습니다.
npx --legacy-peer-deps sb init
1
Storybook을 "직접 설치"하고자 한다면 매뉴얼 설치 방법을 참고하세요.
# Storybook 실행
Storybook을 실행하는 명령은 2가지입니다. (설치 후, package.json 파일에 실행 명령이 추가 됩니다.)
# Storybook 구동
npm run storybook
# Storybook 빌드
npm run build-storybook
1
2
3
4
5
2
3
4
5
# Storybook 구성
프로젝트에 설치된 Storybook 패키지 구성은 main.js
, preview.js
, package.json
파일을 참고합니다.
.storybook/main.js
module.exports = {
"stories": [
"../src/**/*.stories.mdx",
"../src/**/*.stories.@(js|jsx|ts|tsx)"
],
"addons": [
"@storybook/addon-links",
"@storybook/addon-essentials",
"@storybook/preset-create-react-app"
]
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
.storybook/preview.js
export const parameters = {
actions: { argTypesRegex: "^on[A-Z].*" },
}
1
2
3
2
3
package.json
{
"scripts": {
"storybook": "start-storybook -p 6006 -s public",
"build-storybook": "build-storybook -s public"
},
"devDependencies": {
"@storybook/addon-actions": "^6.1.20",
"@storybook/addon-essentials": "^6.1.20",
"@storybook/addon-links": "^6.1.20",
"@storybook/node-logger": "^6.1.20",
"@storybook/preset-create-react-app": "^3.1.6",
"@storybook/react": "^6.1.20"
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# Storybook 가이드 파일
생성된 src/stories
디렉토리 안에는 Storybook에서 제공하는 예제 파일이 포함됩니다.
src/stories/
├── assets/
│ ├── code-brackets.svg
│ ├── colors.svg
│ ├── comments.svg
│ ├── direction.svg
│ ├── flow.svg
│ ├── plugin.svg
│ ├── repo.svg
│ └── stackalt.svg
├── Button.js
├── Button.stories.js
├── Header.js
├── Header.stories.js
├── Introduction.stories.mdx
├── Page.js
├── Page.stories.js
├── button.css
├── header.css
└── page.css
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20