Vue CLI 4에서 스토리북 사용
처음에
Storybook이란?
Storybook 환경 구축
환경
콘솔% node -v
v12.13.0
% npm -v
6.13.6
프로젝트 만들기
Vue CLI를 사용하여 원하는 설정으로 프로젝트를 만듭니다.
콘솔% npx @vue/cli create vue-storybook-demo
Vue CLI v4.2.2
? Please pick a preset: Manually select features
? Check the features needed for your project: TS, Linter
? Use class-style component syntax? Yes
? Use Babel alongside TypeScript (required for modern mode, auto-detected polyfills, transpiling JSX)? No
? Pick a linter / formatter config: Prettier
? Pick additional lint features: (Press <space> to select, <a> to toggle all, <i> to invert selection)Lint o
n save
? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
? Save this as a preset for future projects? No
개발 서버 시작
콘솔% cd vue-storybook-demo
% npm run serve
브라우저에서 http://localhost:8080/
에 액세스하여 표시 확인을 수행합니다.
Storybook 플러그인 추가
콘솔% npx @vue/cli add storybook
? What do you want to generate? Initial framework
? What storybook version do you want? (Please specify semver range) >=5.3.0
? Use Storybook CSF (component story format)? Yes
? Use Storybook Docs? Yes
자동 생성된 샘플 수정
이번 VueCLI 설정은 자동 생성되는 샘플에서 오류가 발생했기 때문에 수정합니다.
src/components/MyButton.vue <script lang="ts">
- export default {
- name: "my-button",
-
- methods: {
- onClick() {
- this.$emit("click");
- }
- }
- };
+ import { Component, Vue } from "vue-property-decorator";
+
+ @Component
+ export default class MyButton extends Vue {
+ public onClick(){
+ this.$emit("click");
+ }
+ }
</script>
Storybook 서버 시작
콘솔% npm run storybook:serve
브라우저에서 http://localhost:6006/?path=/story/button--with-text
로 이동하여 보기를 확인합니다.
(또는 마음대로 브라우저가 열립니다.)
Story 추가
원래 구성 요소 만들기
다음 파일을 새로 작성합니다.
src/components/MyHeading.vue<template>
<h1>
<slot></slot>
</h1>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
@Component
export default class MyHeading extends Vue {}
</script>
Story 추가
다음 파일을 새로 작성합니다.
src/stories/MyHeading.stories.jsimport MyHeading from "../components/MyHeading.vue";
export default {
component: MyHeading,
title: "Heading"
};
export const withText = () => ({
components: { MyHeading },
template: '<my-heading>Hello Title</my-heading>'
});
src/stories/MyHeadding.stories.mdximport { Meta, Props, Story, Preview } from '@storybook/addon-docs/blocks';
import MyHeading from '../components/MyHeading.vue';
<Meta title="MDX|Heading" component={MyHeading} />
# MyHeading
<Props of={MyHeading} />
This is a simple button with some text in it.
<Preview>
<Story name="With Text">
{{
components: { MyHeading },
template: '<my-heading>Hello Title</my-heading>'
}}
</Story>
</Preview>
브라우저에서 표시 확인
이것으로 환경 구축이 완료되었습니다.
여기에서 자작의 컴퍼넌트를 추가하거나, 좋아하는 Storybook 플러그인을 추가해 프로젝트 마다의 컴퍼넌트 카탈로그를 작성해 갑니다.
Reference
이 문제에 관하여(Vue CLI 4에서 스토리북 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuki0410_/items/c1b327be669d084ab802
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
% node -v
v12.13.0
% npm -v
6.13.6
% npx @vue/cli create vue-storybook-demo
Vue CLI v4.2.2
? Please pick a preset: Manually select features
? Check the features needed for your project: TS, Linter
? Use class-style component syntax? Yes
? Use Babel alongside TypeScript (required for modern mode, auto-detected polyfills, transpiling JSX)? No
? Pick a linter / formatter config: Prettier
? Pick additional lint features: (Press <space> to select, <a> to toggle all, <i> to invert selection)Lint o
n save
? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
? Save this as a preset for future projects? No
% cd vue-storybook-demo
% npm run serve
% npx @vue/cli add storybook
? What do you want to generate? Initial framework
? What storybook version do you want? (Please specify semver range) >=5.3.0
? Use Storybook CSF (component story format)? Yes
? Use Storybook Docs? Yes
<script lang="ts">
- export default {
- name: "my-button",
-
- methods: {
- onClick() {
- this.$emit("click");
- }
- }
- };
+ import { Component, Vue } from "vue-property-decorator";
+
+ @Component
+ export default class MyButton extends Vue {
+ public onClick(){
+ this.$emit("click");
+ }
+ }
</script>
% npm run storybook:serve
원래 구성 요소 만들기
다음 파일을 새로 작성합니다.
src/components/MyHeading.vue
<template>
<h1>
<slot></slot>
</h1>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
@Component
export default class MyHeading extends Vue {}
</script>
Story 추가
다음 파일을 새로 작성합니다.
src/stories/MyHeading.stories.js
import MyHeading from "../components/MyHeading.vue";
export default {
component: MyHeading,
title: "Heading"
};
export const withText = () => ({
components: { MyHeading },
template: '<my-heading>Hello Title</my-heading>'
});
src/stories/MyHeadding.stories.mdx
import { Meta, Props, Story, Preview } from '@storybook/addon-docs/blocks';
import MyHeading from '../components/MyHeading.vue';
<Meta title="MDX|Heading" component={MyHeading} />
# MyHeading
<Props of={MyHeading} />
This is a simple button with some text in it.
<Preview>
<Story name="With Text">
{{
components: { MyHeading },
template: '<my-heading>Hello Title</my-heading>'
}}
</Story>
</Preview>
브라우저에서 표시 확인
이것으로 환경 구축이 완료되었습니다.
여기에서 자작의 컴퍼넌트를 추가하거나, 좋아하는 Storybook 플러그인을 추가해 프로젝트 마다의 컴퍼넌트 카탈로그를 작성해 갑니다.
Reference
이 문제에 관하여(Vue CLI 4에서 스토리북 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuki0410_/items/c1b327be669d084ab802텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)