Files
vue3/.storybook/main.ts

85 lines
2.4 KiB
TypeScript

/*
* @Author: zhaojinfeng 121016171@qq.com
* @Date: 2023-06-15 13:22:59
* @LastEditors: peerless_hero peerless_hero@outlook.com
* @LastEditTime: 2023-08-30 13:21:14
* @FilePath: \vue3\.storybook\main.ts
* @Description:
*/
import type { StorybookConfig } from '@storybook/vue3-vite'
import Unocss from 'unocss/vite'
import externalGlobals from 'rollup-plugin-external-globals'
import { createHtmlPlugin } from 'vite-plugin-html'
const externalGlobalsObj = {
'vue': 'Vue',
'vue-demi': 'VueDemi',
'vue-router': 'VueRouter',
// 'react': 'React',
// 'react-dom': 'ReactDom',
// 'VueOfficeDocx': 'vue-office-docx',
// 'VueOfficeExcel': 'vue-office-excel',
// 'VueOfficePdf': 'vue-office-pdf',
}
const cdn = {
css: [
'https://registry.npmmirror.com/element-plus/2.3.6/dist/index.css',
],
js: [
// 'https://registry.npmmirror.com/react/18.2.0/files/umd/react.production.min.js',
// 'https://registry.npmmirror.com/react-dom/18.2.0/files/umd/react-dom.production.min.js',
'https://registry.npmmirror.com/vue/3.2.47/files/dist/vue.global.js',
'https://registry.npmmirror.com/vue-demi/0.14.0/files/lib/index.iife.js',
'https://registry.npmmirror.com/vue-router/4.1.6/files/dist/vue-router.global.js',
],
}
const config: StorybookConfig = {
stories: ['../stories/*.stories.@(js|jsx|ts|tsx)'],
addons: [
'@storybook/addon-links',
'@storybook/addon-essentials',
'@storybook/addon-interactions',
],
framework: {
name: '@storybook/vue3-vite',
options: {},
},
docs: {
autodocs: 'tag',
defaultName: '文档',
},
viteFinal(config) {
const { build, plugins = [] } = config
plugins.push(Unocss())
if (!config.server) {
plugins.push(
{
...externalGlobals(externalGlobalsObj),
enforce: 'post',
apply: 'build',
},
createHtmlPlugin({
minify: true,
inject: {
tags: [
...cdn.css.map(href => ({ tag: 'link', attrs: { href } })),
...cdn.js.map(src => ({ tag: 'script', attrs: { src } })),
],
},
}),
)
if (Array.isArray(build.rollupOptions?.external))
build.rollupOptions.external.push(...Object.keys(externalGlobalsObj))
}
config.plugins = plugins
// Add other configuration here depending on your use case
return config
},
}
export default config