Storybook이 썩지 않게 행운을 빌어주세요.
며칠 전 그쪽 개발에서 스토리북을 도입했는데 도입만 하면 썩기 쉬운 스토리북이라고 생각했는데 이런 일이 생기지 않도록 여기서 조금 공을 들였습니다.제가 그 내용들을 소개하겠습니다.
TL;DR
.stories.js
으로 구현Storybook 개요
Storybook는 UI 구성 요소의 카탈로그 도구입니다.
Storybook의 시작 화면에서 React 등으로 구현된 UI 구성 요소의 렌더링 결과와 상호 작용을 확인할 수 있습니다.
Storybook에서 UI 구성 요소의 디렉토리를 Story라고 합니다.
추가된 Story 목록은 Storybook 화면에서 선택을 통해 표시 내용을 확인할 수 있습니다.
실물은 공식 견본을 보십시오.https://storybooks-official.netlify.com
Story의 추가 방법의 예로 Story에 이러한 UI 구성 요소를 추가MyUI
하면 다음과 같습니다.
MyUI.stories.jsimport { storiesOf } from '@storybook/react'
import MyUI from './MyUI'
storiesOf('Story名(任意の文字列)', module).add('default', () => (
<MyUI>Hello Storybook</MyUI>
));
Story의 파일 이름은 *.stories.js
로, 일반적으로 패턴을 통해 파일 이름을 일관되게 수집하여 Story에 자동으로 추가합니다.
Storybook 도입의 이점
스토리북을 가져오면 뭐가 좋을까요?
나는 대충 조목조목 써 보겠다.
import { storiesOf } from '@storybook/react'
import MyUI from './MyUI'
storiesOf('Story名(任意の文字列)', module).add('default', () => (
<MyUI>Hello Storybook</MyUI>
));
근데 Storybook은 썩기 쉬워요.
그런 스토리북이라도 무심코 가져오면 유지되지 않고 썩기 쉽다.
스토리를 적절하게 관리하면 카탈로그의 일람성, 검색성이 사라지고 새로운 스토리 추가 시 유지보수 비용이 증가하며 양식의 재현성이 불완전하고 신뢰성이 떨어지기 때문이다.
원가가 장점을 초과할 때 그것은 썩기 시작한다.
따라서 유지보수 비용을 낮추면서 더 큰 이익을 누리기 위해 다음과 같은 노력을 기울여야 한다.
1. StoryShots의 자동 캡처 테스트 가져오기
Storybook에 추가된 Story에는 자동으로 캡처 테스트StoryShots가 가능한 Storybook adion이 있습니다.
이것을 가져오면 UI 구성 요소의 변경 사항에 대해 Story의 유지보수를 따라가지 않으면 Story가 표시되지 않는 것을 방지할 수 있습니다.
또한 스토리 추가 = 카탈로그 + 테스트를 추가하여 스토리 추가 효과를 추가합니다.캡처 테스트에서도 커버물을 측정하기 때문에 보면서 스토리를 추가하면 기분이 좋아진다.
2. Story 는 UI 구성 요소 설치 파일의 각 구성 요소에 대해 설치합니다.stories.js라는 파일 이름으로 구현
Story의 추가 방법과 파일 이름은 제한이 없지만 UI 구성 요소의 설치 파일과 같은 층에 같은 이름.stories.js
파일로 구성하는 것을 추천합니다.
이렇게 하면 파일 레이아웃에서 Story와 좌표 테스트가 존재하는 UI 구성 요소를 한순간에 파악할 수 있습니다.반면 이렇게 하지 않으면 추가적인 스토리에서 타깃의 구성요소를 찾거나 추가를 반복하는 일이 발생하기 쉽다.
이 정도면 됐어..
├── companies
│ └── components
│ ├── Company.js
│ └── Company.stories.js
└── users
└── components
├── User
│ ├── Profile.js <------ Story 無い
│ ├── Settings.js
│ └── Settings.stories.js
├── User.js <------------- Story 無い
├── Users.js
└── Users.stories.js
3. Story 이름에서 파일 경로 자동 사용
Storybook의 Story 요약 표시 섹션은 Story 이름에 포함된 /
문자에 따라 자동으로 계층화됩니다.
UI 구성 요소를 쉽게 찾을 수 있도록 계층 구조는 위의 파일 레이아웃과 일치해야 합니다.
이때 파일 레이아웃과 일치하기 위해 스토리 이름을 수동으로 설정하는 유지 보수는 매우 번거롭기 때문에 스토리 설치 파일의 경로에서 자동으로 생성하십시오.
이 방법은 공식 문서에 소개되어 있다.
https://storybook.js.org/docs/basics/writing-stories/#generating-nesting-path-based-on-__dirname
이를 참고하여 Story 이름에서 파일 경로를 사용할 때 다음과 같은 방법을 사용할 수 있습니다.import { storiesOf } from "@storybook/react";
import { base, filename } from "paths.macro"
storiesOf(`${base}/${filename.replace("stories", "")}`, module).add(...)
견본
위와 같은 스토리북이 설정된 샘플을 제작했기 때문에 가능하면 참고하세요.
https://github.com/keik/maintainable-storybook-example
Reference
이 문제에 관하여(Storybook이 썩지 않게 행운을 빌어주세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/keik/items/e275394d454b8b136826
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
.
├── companies
│ └── components
│ ├── Company.js
│ └── Company.stories.js
└── users
└── components
├── User
│ ├── Profile.js <------ Story 無い
│ ├── Settings.js
│ └── Settings.stories.js
├── User.js <------------- Story 無い
├── Users.js
└── Users.stories.js
import { storiesOf } from "@storybook/react";
import { base, filename } from "paths.macro"
storiesOf(`${base}/${filename.replace("stories", "")}`, module).add(...)
위와 같은 스토리북이 설정된 샘플을 제작했기 때문에 가능하면 참고하세요.
https://github.com/keik/maintainable-storybook-example
Reference
이 문제에 관하여(Storybook이 썩지 않게 행운을 빌어주세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/keik/items/e275394d454b8b136826텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)