vite/storybook/rollup搭建一个自己的组件库
构建测试项目
首先vite 初始化一个项目
vue create story-book-demo
## 或者 vue create story-book-demo
然后添加storybook ,具体参看官网:https://storybook.js.org/docs/vue/get-started/install
npx storybook init
这个时候就可以跑项目了
初始化做了什么?
虽然项目运行起来了,不过突然自动创建了一堆未知的文件,也让人心里没底,来看看项目初始化做了哪些事情吧。
安装所需的依赖包:因为识别到当前目录下是一个 Angular 项目,所以安装的是 Angular 版本的 Storybook 依赖包。
"@storybook/addon-actions": 用以记录事件触发的插件。
"@storybook/addon-essentials": 官方维护的插件集合,带有默认配置。
"@storybook/addon-links": 用以给组件 story 创建链接。
"@storybook/vue3": storybook 针对 vue框架。
“@storybook/builder-webpack5”:针对webpack 构建
设置 npm 脚本:
"storybook": 本地运行 Storybook
"build-storybook": 编译打包 Storybook 项目
在项目根目录创建 .storybook 文件夹,添加默认配置:
main.js:项目的全局配置文件,定义了 story 的查找路径,以及引入的插件。
preview.js:项目的渲染配置,包括全局样式的引入,通用性的变量等。
tsconfig.json:自动识别项目采用 typescript 后自动生成的配置文件
在 src/stories 目录下创建三个组件(button、header、page),以及它们的 story 示例
文件说明
main.js
module.exports = {
"stories": [ // 组件Stories目录所在 —— Storybook会载入配置路径下的指定文件渲染展示
"../stories/**/*.stories.mdx",
"../stories/**/*.stories.@(js|jsx|ts|tsx)"
],
"addons": [ // Storybook所用插件 —— Storybook功能增强
"@storybook/addon-links",
"@storybook/addon-essentials"
],
"framework": "@storybook/vue3" // Storybook所用框架 —— Vue环境支持
}
该文件定义StoryBook与编译相关的配置。
preview.js
// .storybook/preview.js
import elementPlus from 'element-plus';
import { app } from '@storybook/vue3' app.use(elementPlus);
export const decorators = [
(story) => ({
components: { story, elementPlus },
template: '<elementPlus><story/></elementPlus>'
})
];
import "element-plus/lib/theme-chalk/index.css"; export const parameters = {
actions: { argTypesRegex: "^on[A-Z].*" },
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/,
},
}
}
该文件引入全局依赖,定义StoryBook渲染相关的配置。
配置按需加载后,import elementPlus from 'element-plus';导入elementPlus报错:elementPlus is not defined —— 全局加载、按需加载不能在同一项目中使用。
按需加载
在需要使用ElementPlus的Stories中直接引入即可:
// SubmitForm.stories.ts
import { ElButton } from 'element-plus';
import SubmitForm from "./index";
import { SchemaType, RuleTrigger } from "./src/schemas/baseSchema";
const caseSchema = [
{
key: "moduleName",
name: "title",
type: SchemaType.Text,
label: "栏目名称",
placeholder: "请输入栏目名称",
attrs: {
//
},
rules: [
{
required: true,
message: "栏目名称必填~",
trigger: RuleTrigger.Blur,
},
],
},
...
];
export default {
title: "ui组件/SubmitForm",
component: SubmitForm,
};
const Template = (args: any) => ({
components: { SubmitForm, ElButton },
setup() {
return {
...args,
};
},
template: '<submit-form :schema="schema" ref="submitFormRef"></submit-form><el-button @click="submit">提交</el-button>',
});
export const 基本应用 = Template.bind({});
(基本应用 as any).args = {
schema: caseSchema,
};
拓展项目
因为项目是用sass,所以需要增加
yarn add -D @storybook/preset-scss css-loader@5.2.6 sass sass-loader@10.1.1 style-loader@2.0.0
如果是vue-cli,只需
yarn add -D @storybook/preset-scss sass sass-loader css-loader style-loader
在项目 .storybook/main.cjs,增加"@storybook/preset-scss", "@storybook/addon-postcss", 《写vue3+ jsx+ts语法+ storybook展示的组件库》
module.exports = {
"stories": [
"../src/**/*.stories.mdx",
"../src/**/*.stories.@(js|jsx|ts|tsx)"
],
"addons": [
"@storybook/preset-scss",
"@storybook/addon-postcss",
"@storybook/addon-links",
"@storybook/addon-essentials",
"@storybook/addon-interactions"
],
"framework": "@storybook/vue3",
"core": {
"builder": "@storybook/builder-vite"
},
"features": {
"storyStoreV7": true
}
}
当然还可以安装更多的插件,详情《storybook插件说明: integrations与addons推荐》
转载本站文章《vite/storybook/rollup搭建一个自己的组件库》,
请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/storybook/8892.html
vite/storybook/rollup搭建一个自己的组件库的更多相关文章
- 手把手教你搭建自己的Angular组件库 - DevUI
摘要:DevUI 是一款面向企业中后台产品的开源前端解决方案,它倡导沉浸.灵活.至简的设计价值观,提倡设计者为真实的需求服务,为多数人的设计,拒绝哗众取宠.取悦眼球的设计.如果你正在开发 ToB 的工 ...
- 使用VitePress搭建及部署vue组件库文档
每个组件库都有它们自己的文档.所以当我们开发完成我们自己的组件库必须也需要一个组件库文档.如果你还不了解如何搭建自己的组件库可以看这里->从零搭建Vue3组件库.看完这篇文章你就会发现原来搭建和 ...
- 如何写一个自己的组件库,打成NPM包,并上传到NPM远程
1.首先使用vue create my_project 构建一个自己的Vue项目 2.vue.config.js和package.json配置如下,做了些修改 const path = require ...
- 从0搭建Vue3组件库(三): 组件库的环境配置
本篇文章将在项目中引入 typescript,以及手动搭建一个用于测试组件库组件 Vue3 项目 因为我们是使用 Vite+Ts 开发的是 Vue3 组件库,所以我们需要安装 typescript.v ...
- OpenTiny 跨端、跨框架组件库升级TypeScript,10万行代码重获新生
摘要:一份精心准备的<JS项目改造TS指南>文档供大家参考,顺便介绍TS 基础知识和 TS 在 Vue 中的实践. 本文分享自华为云社区<历史性的时刻!OpenTiny 跨端.跨框架 ...
- 参与开源之夏 x OpenTiny 跨端跨框架 UI 组件库贡献,可以赢取奖金🏆!这份《OpenTiny 开源贡献指南》请收好🎁!
大家好,我是 Kagol. 近期有几位朋友在 OpenTiny 技术交流群里询问我们在开源之夏(OSPP)的项目,希望能提前做一些准备工作. 这里给大家简单介绍下开源之夏. 开源之夏是由中科院软件所& ...
- 基于Vue的npm组件库
前言(*❦ω❦) 思维导图可能有点高糊,有点太大了,项目和导图文件放到github或giteee上,这个思维导图也是我文章的架构,思维导图是用FeHelper插件生成的,这个是一款开源chrome插件 ...
- Vite+TS带你搭建一个属于自己的Vue3组件库
theme: nico 前言 随着前端技术的发展,业界涌现出了许多的UI组件库.例如我们熟知的ElementUI,Vant,AntDesign等等.但是作为一个前端开发者,你知道一个UI组件库是如何被 ...
- 从0搭建vue3组件库: 如何完整搭建一个前端脚手架?
相信大家在前端开发中都使用过很多前端脚手架,如vue-cli,create-vite,create-vue等:本篇文章将会为大家详细介绍这些前端脚手架是如何实现的,并且从零实现一个create-kit ...
- [翻译]怎么写一个React组件库(二)
本文同步发布于知乎专栏 https://zhuanlan.zhihu.com/p/27434018,喜欢本文的就去知乎点个赞支持下吧- 引言 该系列文章将通过创建一个组件库来引导你学习如何构建自己的组 ...
随机推荐
- 第1章 .NET起步
1.1 什么是.NET? .NET 8.0 SDK下载地址:https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0 .NET 是一个免费的跨平台开 ...
- String 的 indexOf 与 search 方便的区别
String 这个对象里面包含许多方法 今天只要讲 indexOf 与 search 1.indexOf stringObject.indexOf(searchvalue,fromindex) 2.s ...
- van-dialog弹窗异步关闭-校验表单
van-dialog弹窗异步关闭 有时候我们需要通过弹窗去处理表单数据,在原生微信小程序配合vant组件中有多种方式实现,其中UI美观度最高的就是通过van-dialog嵌套表单实现. 通常表单涉及到 ...
- 牛客小白月赛43 F 全体集合
题目链接 F 全体集合 题目大意 给出\(n\)个点\(m\)条边的无向图,给出\(k\)个点上分别有一个人,每个人一次只能走到一个相邻的节点,问有没有一种可能让这些人都走到一个点. 思路 考虑使用二 ...
- 重学Java(一):什么是对象
前言 本系列文章内容来自于<Thinking in Java>作者的最新续作<On Java>基础卷,作者根据最新 Java 8.11.17的内容,重讲了Java的编程思想,值 ...
- go并发 - channel
概述 并发编程是利用多核心能力,提升程序性能,而多线程之间需要相互协作.共享资源.线程安全等.任何并发模型都要解决线程间通讯问题,毫不夸张的说线程通讯是并发编程的主要问题.go使用著名的CSP(Com ...
- Python 之 Numpy 框架入门
NumPy 目录 NumPy 基础使用 基本数据类型 创建基本数组 数组属性 数组生成 zeros.ones.empty 数组生成 numpy.zeros numpy.ones numpy.empty ...
- 如何搭建园区3d可视化大屏
搭建园区3D可视化大屏需要考虑多个方面,包括硬件设备.数据源获取.软件工具和可视化设计. 以下是一个详细的步骤指南,帮助您了解如何搭建园区3D可视化大屏. 1. 硬件设备选择: - 显示屏幕:选择适合 ...
- 简易的git命令行入门教程
一.Git 全局设置 git config --global user.name "用户名" git config --global user.email "邮件地址@1 ...
- 在Winform应用中增加通用的业务编码规则生成
在我们很多应用系统中,往往都需要根据实际情况生成一些编码规则,如订单号.入库单号.出库单号.退货单号等等,我们有时候根据规则自行增加一个函数来生成处理,不过我们仔细观察后,发现它们的编码规则有很大的共 ...