mirror of
https://github.com/fantastic-admin/basic.git
synced 2026-10-07 13:48:38 +08:00
feat: v6 pre-release
This commit is contained in:
Executable
+194
@@ -0,0 +1,194 @@
|
||||
import type { PluginOption } from 'vite'
|
||||
import process from 'node:process'
|
||||
import { FantasticAutoImports, FantasticComponentsResolver, FantasticComponentsType } from '@fantastic-admin/components/resolver'
|
||||
import { createFantasticAdminCopyrightPlugins } from '@fantastic-admin/copyright'
|
||||
import VitePluginSvgSpritemap from '@spiriit/vite-plugin-svg-spritemap'
|
||||
import vueLegacy from '@vitejs/plugin-legacy'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
import vueJsx from '@vitejs/plugin-vue-jsx'
|
||||
import Unocss from 'unocss/vite'
|
||||
import autoImport from 'unplugin-auto-import/vite'
|
||||
import TurboConsole from 'unplugin-turbo-console/vite'
|
||||
import components from 'unplugin-vue-components/vite'
|
||||
import { loadEnv } from 'vite'
|
||||
import AppLoading from 'vite-plugin-app-loading'
|
||||
import Archiver from 'vite-plugin-archiver'
|
||||
import { compression } from 'vite-plugin-compression2'
|
||||
import { envParse, parseLoadedEnv } from 'vite-plugin-env-parse'
|
||||
import { vitePluginFakeServer } from 'vite-plugin-fake-server'
|
||||
import VueDevTools from 'vite-plugin-vue-devtools'
|
||||
|
||||
export default function createVitePlugins(mode: string, isBuild = false) {
|
||||
const viteEnv = parseLoadedEnv(loadEnv(mode, process.cwd()))
|
||||
const vitePlugins: (PluginOption | PluginOption[])[] = [
|
||||
vue(),
|
||||
vueJsx(),
|
||||
vueLegacy({
|
||||
renderLegacyChunks: false,
|
||||
modernPolyfills: [
|
||||
'es.array.at',
|
||||
'es.array.find-last',
|
||||
'es.object.has-own',
|
||||
],
|
||||
}),
|
||||
|
||||
// https://github.com/vuejs/devtools
|
||||
viteEnv.VITE_ENABLE_VUE_DEVTOOLS && VueDevTools({
|
||||
launchEditor: viteEnv.VITE_LAUNCH_EDITOR,
|
||||
}),
|
||||
|
||||
envParse({
|
||||
dtsPath: 'src/types/env.d.ts',
|
||||
}),
|
||||
|
||||
// https://github.com/unplugin/unplugin-auto-import
|
||||
autoImport({
|
||||
imports: [
|
||||
'vue',
|
||||
'vue-router',
|
||||
'pinia',
|
||||
FantasticAutoImports,
|
||||
],
|
||||
dts: './src/types/auto-imports.d.ts',
|
||||
dirs: [
|
||||
'./src/store/modules/**/*',
|
||||
'./src/composables/**/*',
|
||||
],
|
||||
}),
|
||||
|
||||
// https://github.com/unplugin/unplugin-vue-components
|
||||
components({
|
||||
globs: [
|
||||
'src/components/*/index.vue',
|
||||
],
|
||||
dts: './src/types/components.d.ts',
|
||||
resolvers: [
|
||||
FantasticComponentsResolver(),
|
||||
],
|
||||
types: [
|
||||
FantasticComponentsType,
|
||||
],
|
||||
}),
|
||||
|
||||
Unocss(),
|
||||
|
||||
// https://github.com/SpiriitLabs/vite-plugin-svg-spritemap
|
||||
VitePluginSvgSpritemap('./src/assets/icons/*.svg'),
|
||||
|
||||
// https://github.com/condorheroblog/vite-plugin-fake-server
|
||||
vitePluginFakeServer({
|
||||
logger: !isBuild,
|
||||
include: 'src/api/modules',
|
||||
enableProd: isBuild && viteEnv.VITE_BUILD_FAKE,
|
||||
}),
|
||||
// https://github.com/nonzzz/vite-plugin-compression
|
||||
viteEnv.VITE_BUILD_COMPRESS && compression({
|
||||
exclude: [/\.(br)$/, /\.(gz)$/],
|
||||
algorithms: viteEnv.VITE_BUILD_COMPRESS.split(',').map((item: string) => ({
|
||||
gzip: 'gzip',
|
||||
brotli: 'brotliCompress',
|
||||
}[item])),
|
||||
}),
|
||||
|
||||
viteEnv.VITE_BUILD_ARCHIVE && Archiver({
|
||||
archiveType: viteEnv.VITE_BUILD_ARCHIVE,
|
||||
}),
|
||||
|
||||
AppLoading('loading.html'),
|
||||
|
||||
// https://github.com/unplugin/unplugin-turbo-console
|
||||
viteEnv.VITE_ENABLE_TURBO_CONSOLE && TurboConsole({
|
||||
launchEditor: {
|
||||
specifiedEditor: viteEnv.VITE_LAUNCH_EDITOR,
|
||||
},
|
||||
}),
|
||||
(() => {
|
||||
const moduleId = 'virtual:fantastic-admin/turbo-console'
|
||||
const resolvedModuleId = `\0${moduleId}`
|
||||
|
||||
return {
|
||||
name: 'vite-plugin-turbo-console-bridge',
|
||||
resolveId(id) {
|
||||
if (id === moduleId) {
|
||||
return resolvedModuleId
|
||||
}
|
||||
},
|
||||
load(id) {
|
||||
if (id === resolvedModuleId) {
|
||||
if (viteEnv.VITE_ENABLE_TURBO_CONSOLE && !isBuild) {
|
||||
return String.raw`
|
||||
import { host, port } from '~console/server-info'
|
||||
|
||||
export function warnKeepAliveComponentNameMissing(filePath) {
|
||||
// turbo-console-disable-next-line
|
||||
console.warn(
|
||||
'[Fantastic-admin]\n\n该页面组件未设置组件名,会导致保活失效,点击下方链接打开该文件进行检查\n'
|
||||
+ '%chttp://' + host + ':' + port + '?path=' + filePath,
|
||||
'background:#00DC8250;padding:2px 5px;border-radius:0 3px 3px 0;margin:0 0 5px 0;',
|
||||
)
|
||||
}
|
||||
`
|
||||
}
|
||||
return String.raw`
|
||||
export function warnKeepAliveComponentNameMissing() {}
|
||||
`
|
||||
}
|
||||
},
|
||||
} satisfies PluginOption
|
||||
})(),
|
||||
|
||||
{
|
||||
name: 'vite-plugin-debug-plugin',
|
||||
enforce: 'pre',
|
||||
transform: (code, id) => {
|
||||
if (/src\/main.ts$/.test(id)) {
|
||||
if (viteEnv.VITE_APP_DEBUG_TOOL === 'eruda') {
|
||||
code = `
|
||||
${code}
|
||||
import eruda from 'eruda'
|
||||
eruda.init()
|
||||
`
|
||||
}
|
||||
else if (viteEnv.VITE_APP_DEBUG_TOOL === 'vconsole') {
|
||||
code = `
|
||||
${code}
|
||||
import VConsole from 'vconsole'
|
||||
new VConsole()
|
||||
`
|
||||
}
|
||||
return {
|
||||
code,
|
||||
map: null,
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
name: 'vite-plugin-disable-devtool',
|
||||
enforce: 'pre',
|
||||
apply: 'build',
|
||||
transform: (code, id) => {
|
||||
if (/src\/main.ts$/.test(id)) {
|
||||
if (viteEnv.VITE_APP_DISABLE_DEVTOOL) {
|
||||
// ?ddtk=example
|
||||
code = `
|
||||
${code}
|
||||
import DisableDevtool from 'disable-devtool'
|
||||
DisableDevtool({
|
||||
md5: '1a79a4d60de6718e8e5b326e338ae533',
|
||||
})
|
||||
`
|
||||
}
|
||||
return {
|
||||
code,
|
||||
map: null,
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
createFantasticAdminCopyrightPlugins(),
|
||||
]
|
||||
return vitePlugins
|
||||
}
|
||||
Reference in New Issue
Block a user