173 lines
4.0 KiB
TypeScript
173 lines
4.0 KiB
TypeScript
import type { PwaOptions } from '@vite-pwa/vitepress';
|
|
import type { HeadConfig } from 'vitepress';
|
|
|
|
import { resolve } from 'node:path';
|
|
|
|
import {
|
|
viteArchiverPlugin,
|
|
viteVxeTableImportsPlugin,
|
|
} from '@vben/vite-config';
|
|
|
|
import {
|
|
GitChangelog,
|
|
GitChangelogMarkdownSection,
|
|
} from '@nolebase/vitepress-plugin-git-changelog/vite';
|
|
import tailwind from 'tailwindcss';
|
|
import { defineConfig, postcssIsolateStyles } from 'vitepress';
|
|
import {
|
|
groupIconMdPlugin,
|
|
groupIconVitePlugin,
|
|
} from 'vitepress-plugin-group-icons';
|
|
|
|
import { demoPreviewPlugin } from './plugins/demo-preview';
|
|
import { search as zhSearch } from './zh.mts';
|
|
|
|
export const shared = defineConfig({
|
|
appearance: 'dark',
|
|
head: head(),
|
|
markdown: {
|
|
preConfig(md) {
|
|
md.use(demoPreviewPlugin);
|
|
md.use(groupIconMdPlugin);
|
|
},
|
|
},
|
|
pwa: pwa(),
|
|
srcDir: 'src',
|
|
themeConfig: {
|
|
i18nRouting: true,
|
|
logo: 'https://unpkg.com/@vbenjs/static-source@0.1.7/source/logo-v1.webp',
|
|
search: {
|
|
options: {
|
|
locales: {
|
|
...zhSearch,
|
|
},
|
|
},
|
|
provider: 'local',
|
|
},
|
|
siteTitle: 'Vben Admin',
|
|
socialLinks: [
|
|
{ icon: 'github', link: 'https://github.com/vbenjs/vue-vben-admin' },
|
|
],
|
|
},
|
|
title: 'Vben Admin',
|
|
vite: {
|
|
build: {
|
|
chunkSizeWarningLimit: Infinity,
|
|
minify: 'terser',
|
|
},
|
|
css: {
|
|
postcss: {
|
|
plugins: [
|
|
tailwind(),
|
|
postcssIsolateStyles({ includeFiles: [/vp-doc\.css/] }),
|
|
],
|
|
},
|
|
preprocessorOptions: {
|
|
scss: {
|
|
api: 'modern',
|
|
},
|
|
},
|
|
},
|
|
json: {
|
|
stringify: true,
|
|
},
|
|
plugins: [
|
|
GitChangelog({
|
|
mapAuthors: [
|
|
{
|
|
mapByNameAliases: ['Vben'],
|
|
name: 'vben',
|
|
username: 'anncwb',
|
|
},
|
|
{
|
|
name: 'vince',
|
|
username: 'vince292007',
|
|
},
|
|
{
|
|
name: 'Li Kui',
|
|
username: 'likui628',
|
|
},
|
|
],
|
|
repoURL: () => 'https://github.com/vbenjs/vue-vben-admin',
|
|
}),
|
|
GitChangelogMarkdownSection(),
|
|
viteArchiverPlugin({ outputDir: '.vitepress' }),
|
|
groupIconVitePlugin(),
|
|
await viteVxeTableImportsPlugin(),
|
|
],
|
|
server: {
|
|
fs: {
|
|
allow: ['../..'],
|
|
},
|
|
host: true,
|
|
port: 6173,
|
|
},
|
|
|
|
ssr: {
|
|
external: ['@vue/repl'],
|
|
},
|
|
},
|
|
});
|
|
|
|
function head(): HeadConfig[] {
|
|
return [
|
|
['meta', { content: 'Vbenjs Team', name: 'author' }],
|
|
[
|
|
'meta',
|
|
{
|
|
content: 'vben, vitejs, vite, shacdn-ui, vue',
|
|
name: 'keywords',
|
|
},
|
|
],
|
|
['link', { href: '/favicon.ico', rel: 'icon', type: 'image/svg+xml' }],
|
|
[
|
|
'meta',
|
|
{
|
|
content:
|
|
'width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no',
|
|
name: 'viewport',
|
|
},
|
|
],
|
|
['meta', { content: 'vben admin docs', name: 'keywords' }],
|
|
['link', { href: '/favicon.ico', rel: 'icon' }],
|
|
// [
|
|
// 'script',
|
|
// {
|
|
// src: 'https://cdn.tailwindcss.com',
|
|
// },
|
|
// ],
|
|
];
|
|
}
|
|
|
|
function pwa(): PwaOptions {
|
|
return {
|
|
includeManifestIcons: false,
|
|
manifest: {
|
|
description:
|
|
'Vben Admin is a modern admin dashboard template based on Vue 3. ',
|
|
icons: [
|
|
{
|
|
sizes: '192x192',
|
|
src: 'https://unpkg.com/@vbenjs/static-source@0.1.7/source/pwa-icon-192.png',
|
|
type: 'image/png',
|
|
},
|
|
{
|
|
sizes: '512x512',
|
|
src: 'https://unpkg.com/@vbenjs/static-source@0.1.7/source/pwa-icon-512.png',
|
|
type: 'image/png',
|
|
},
|
|
],
|
|
id: '/',
|
|
name: 'Vben Admin Doc',
|
|
short_name: 'vben_admin_doc',
|
|
theme_color: '#ffffff',
|
|
},
|
|
outDir: resolve(process.cwd(), '.vitepress/dist'),
|
|
registerType: 'autoUpdate',
|
|
workbox: {
|
|
globPatterns: ['**/*.{css,js,html,svg,png,ico,txt,woff2}'],
|
|
maximumFileSizeToCacheInBytes: 5 * 1024 * 1024,
|
|
},
|
|
};
|
|
}
|