storybook创建vue组件库文档
官方文档
https://storybook.js.org/docs/vue/get-started/introduction
一、安装
【storybook创建vue组件库文档】storybook依赖脚手架的一些默认配置,所以先用vue-cli创建项目,然后用下面的命令自动安装。
npx -p @storybook/cli sb init --type vue
安装后项目目录
项目多出两个文件夹.storybook和stories
├── .storybook// storybook配置相关文件
│├── main.js// 入口文件,配置插件,webpack等
│└── preview.js// 其他配置信息
│
└── src
└── stories// 组件story书写的核心位置
启动项目
npm run storybook
打包项目
npm run build-storybook
二、配置组件支持less 组件如果使用less的话,需进行额外配置,否则会报错。
配置文件 .storybook/main.js 增加webpackFinal属性
"webpackFinal": async (config, {
configType
}) => {
config.module.rules.push({
test: /\.less$/,
use: ['style-loader', 'css-loader', 'less-loader'],
});
return config;
},
三、配置主题 自定义标题,替代默认storybook文案
文章图片
配置主题 新建文件.storybook/myTheme.js
import {
create
} from '@storybook/theming';
export default create({
base: 'light',
brandTitle: 'Olympic 2021',
// brandUrl: 'https://example.com',
// brandImage: 'https://place-hold.it/350x150',
});
新建文件.storybook/manager.js
import {
addons
} from '@storybook/addons';
import myTheme from './myTheme.js'addons.setConfig({
theme: myTheme,
});
文章图片
标题修改 四、左侧分组及中文显示 每个组件在stories下定义一个对应的xxx.stories.js的文件。
以默认demo的button举例,可以修改分组名和左侧列表的中文名。
文章图片
button.sotries.js
文章图片
展示效果 五、自定义canvas展示外层样式 组件展示的时候,可能需要外层父元素和一些特定样式
增加 decorators,以button为例,加背景展示
文章图片
自定义canvas展示外层样式
export default {
title: 'Example例子/Button按钮',
component: MyButton,
argTypes: {
backgroundColor: { control: 'color' },
size: { control: { type: 'select', options: ['small', 'medium', 'large'] } },
},
decorators: [() => ({
template: ''
})],
};
六、给组件展示时引入默认样式 直接在xxx.stories.js头部import样式文件
import '../style/tableDemo.css'
七、自定义markdown文档 使用插件
- npm 安装 @storybook/addon-notes
- 在.storybook下的 main.js增加配置
文章图片
main.js增加配置 - 对应组件的xxx.stores.js文件中配置markdown文件,增加parameters配置
import tableItem from '../components/table.vue';
import {tableDataDefault} from '../datas/tableMockData.js'
import '../style/tableDemo.css'
// 引入markdown文件
import tableReadme from '../../docs/tableReadme.md'
export default {
title: '基础组件/table',
component: tableItem,
// 配置markdown文件
parameters: {
notes: tableReadme,
},
};
const Template = (args, {
argTypes
}) => ({
props: Object.keys(argTypes),
components: {
tableItem
},
template: ' ',
});
console.log(tableDataDefault)
export const Primary = Template.bind({});
Primary.args = tableDataDefault;
文章图片
image.jpeg
推荐阅读
- vue-cli|vue-cli 3.x vue.config.js 配置
- 2020-04-07vue中Axios的封装和API接口的管理
- django-前后端交互
- IDEA|IDEA 创建工程
- VueX--VUE核心插件
- vue组件中为何data必须是一个函数()
- 用npm发布一个包的教程并编写一个vue的插件发布
- vuex|vuex 基础结构
- Vue源码分析—响应式原理(二)
- VueX(Vuex|VueX(Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式)