|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- import path from 'path'
- import { defineConfig } from 'vite'
- import Preview from 'vite-plugin-vue-component-preview'
- import Vue from '@vitejs/plugin-vue'
- import Pages from 'vite-plugin-pages'
- import generateSitemap from 'vite-ssg-sitemap'
- import Layouts from 'vite-plugin-vue-layouts'
- import Components from 'unplugin-vue-components/vite'
- import AutoImport from 'unplugin-auto-import/vite'
- import Markdown from 'vite-plugin-vue-markdown'
- import { VitePWA } from 'vite-plugin-pwa'
- import VueI18n from '@intlify/vite-plugin-vue-i18n'
- import Inspect from 'vite-plugin-inspect'
- import LinkAttributes from 'markdown-it-link-attributes'
- import Shiki from 'markdown-it-shiki'
- import VueMacros from 'unplugin-vue-macros/vite'
- import Unocss from '@unocss/vite'
-
- export default defineConfig({
- resolve: {
- alias: {
- '~/': `${path.resolve(__dirname, 'src')}/`,
- },
- },
-
- plugins: [
- Preview(),
-
- VueMacros({
- plugins: {
- vue: Vue({
- include: [/\.vue$/, /\.md$/],
- reactivityTransform: true,
- }),
- },
- }),
-
- // https://github.com/hannoeru/vite-plugin-pages
- Pages({
- extensions: ['vue', 'md'],
- }),
-
- // https://github.com/JohnCampionJr/vite-plugin-vue-layouts
- Layouts(),
-
- // https://github.com/antfu/unplugin-auto-import
- AutoImport({
- imports: [
- 'vue',
- 'vue-router',
- 'vue-i18n',
- 'vue/macros',
- '@vueuse/head',
- '@vueuse/core',
- ],
- dts: 'src/auto-imports.d.ts',
- dirs: [
- 'src/composables',
- 'src/store',
- ],
- vueTemplate: true,
- }),
-
- // https://github.com/antfu/unplugin-vue-components
- Components({
- // allow auto load markdown components under `./src/components/`
- extensions: ['vue', 'md'],
- // allow auto import and register components used in markdown
- include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
- dts: 'src/components.d.ts',
- }),
-
- // https://github.com/antfu/vite-plugin-vue-markdown
- // Don't need this? Try vitesse-lite: https://github.com/antfu/vitesse-lite
- Markdown({
- wrapperClasses: 'prose prose-sm m-auto text-left',
- headEnabled: true,
- markdownItSetup(md) {
- // https://prismjs.com/
- md.use(Shiki, {
- theme: {
- light: 'vitesse-light',
- dark: 'vitesse-dark',
- },
- })
- md.use(LinkAttributes, {
- matcher: (link: string) => /^https?:\/\//.test(link),
- attrs: {
- target: '_blank',
- rel: 'noopener',
- },
- })
- },
- }),
-
- // https://github.com/antfu/unocss
- // see unocss.config.ts for config
- Unocss(),
-
- // https://github.com/antfu/vite-plugin-pwa
- VitePWA({
- registerType: 'autoUpdate',
- includeAssets: ['favicon.svg', 'safari-pinned-tab.svg'],
- manifest: {
- name: 'Vitesse',
- short_name: 'Vitesse',
- theme_color: '#ffffff',
- icons: [
- {
- src: '/pwa-192x192.png',
- sizes: '192x192',
- type: 'image/png',
- },
- {
- src: '/pwa-512x512.png',
- sizes: '512x512',
- type: 'image/png',
- },
- {
- src: '/pwa-512x512.png',
- sizes: '512x512',
- type: 'image/png',
- purpose: 'any maskable',
- },
- ],
- },
- }),
-
- // https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n
- VueI18n({
- runtimeOnly: true,
- compositionOnly: true,
- include: [path.resolve(__dirname, 'locales/**')],
- }),
-
- // https://github.com/antfu/vite-plugin-inspect
- // Visit http://localhost:3333/__inspect/ to see the inspector
- Inspect(),
- ],
-
- // https://github.com/antfu/vite-ssg
- ssgOptions: {
- script: 'async',
- formatting: 'minify',
- onFinished() { generateSitemap() },
- },
-
- ssr: {
- // TODO: workaround until they support native ESM
- noExternal: ['workbox-window', /vue-i18n/],
- },
- })
|