/* eslint-disable import/no-unresolved */ import { resolve } from 'path' import vue from '@vitejs/plugin-vue' import anchor from 'markdown-it-anchor' import { visualizer } from 'rollup-plugin-visualizer' import Unocss from 'unocss/vite' import Markdown from 'vite-plugin-md' import svgLoader from 'vite-svg-loader' import pkg from './package.json' // https://vitejs.dev/config/ export default { build: { emptyOutDir: false, sourcemap: true, lib: { entry: resolve(process.cwd(), 'src/exports'), name: 'WyrdUI', }, rollupOptions: { // vite (v2.9.9) tree shaking doesn't work without this // preserveModules: true, // make sure to externalize deps that shouldn't be bundled // into your library external: [...Object.keys(pkg.peerDependencies)], output: { format: ['es'], // inlineDynamicImports: true, // Provide global variables to use in the UMD build // for externalized deps globals: { vue: 'Vue', 'vue-router': 'VueRouter', 'body-scroll-lock': 'bodyScrollLock', '@vueuse/core': 'VueUseCore', '@vueuse/components': 'VueUseComponents', }, }, }, }, resolve: { alias: { '~': resolve(process.cwd(), 'src'), }, }, plugins: [ vue({ include: [/\.vue$/, /\.md$/], }), Markdown({ headEnabled: true, wrapperClasses: 'markdown-body', // default options passed to markdown-it // see: https://markdown-it.github.io/markdown-it/ markdownItOptions: { html: true, linkify: true, typographer: true, }, markdownItSetup(md: any) { md.use(require('markdown-it-footnote')) // md.use(require('markdown-it-deflist')) md.use(require('markdown-it-prism')) md.use(require('markdown-it-emoji/light'), {}) md.use(anchor, { permalink: anchor.permalink.linkInsideHeader({ symbol: ` `, placement: 'before', space: false, }), }) // md.use(require('markdown-it-toc-done-right'), { // listType: 'ul', // level: 1, // }) }, }), // https://github.com/jpkleemans/vite-svg-loader svgLoader(), // https://github.com/unocss/unocss Unocss(), // https://github.com/btd/rollup-plugin-visualizer visualizer({ open: false, title: 'WyrdUI Bundle Visualizer', }), ], css: { postcss: { plugins: [ require('postcss-import'), require('postcss-nested')({ bubble: ['screen'], }), ], }, }, }