Files
ZDXSGYHT/library/build/index.ts
liangjian 836c61ac55 @@@@@@
2026-01-27 16:32:15 +08:00

72 lines
2.4 KiB
TypeScript

import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import chokidar from 'chokidar'
import dayjs from 'dayjs'
import pc from 'picocolors'
import type { Plugin } from 'vite'
import { createBanner } from './banner/'
import { createCompress } from './compress/'
import { createHttps } from './https'
import { createMock } from './mock/'
import { createProgress } from './progress/'
import { createPwa } from './pwa/'
import { createSvgIcons } from './svgSprite/'
import { createUnPlugin } from './unplugin/'
import { createVisualizer } from './visualizer/'
import { compress, https, localEnabled, port, prodEnabled, pwa, pwaDev, report } from '/@/config/'
const viteApp = 'VITE_' + 'APP_'
const viteUser = 'VITE_' + 'USER_'
export const createVitePlugin = (env: Record<string, string>) => {
const vitePlugins: (Plugin | Plugin[])[] = [vue()]
const userName = env[`${viteApp}GITHUB_USER_NAME`]
const secretKey = env[`${viteApp}SECRET_KEY`]
const nodeEnv = env[`${viteUser}NODE_ENV`]
const isEmpty = (value: any) => {
return value == undefined || value == '' || value == null
}
if (isEmpty(userName) || isEmpty(secretKey)) return
if (nodeEnv !== 'development' && (isEmpty(userName) || isEmpty(secretKey))) return
vitePlugins.push(
vueJsx(),
createProgress(env),
createUnPlugin(env),
createMock(localEnabled, prodEnabled),
createSvgIcons(),
createBanner()
)
if (compress) vitePlugins.push(createCompress(compress))
if (pwa) vitePlugins.push(createPwa(nodeEnv, pwaDev))
if (https) vitePlugins.push(createHttps())
if (report) vitePlugins.push(createVisualizer())
return vitePlugins
}
export const createWatch = (env: Record<string, string>) => {
const userName = env[`${viteApp}GITHUB_USER_NAME`]
const secretKey = env[`${viteApp}SECRET_KEY`]
const nodeEnv = env[`${viteUser}NODE_ENV`]
if (nodeEnv === 'production' && (userName === 'test' || secretKey === 'preview')) {
console.log(
`${pc.red(
'key错误'
)}`
)
process.exit()
}
if (nodeEnv === 'development') {
chokidar.watch('./src/views').on('change', (path) => {
if (path.endsWith('vue')) {
console.log(
`\n${pc.gray(dayjs().format('HH:mm:ss'))} ${pc.cyan('[Vue Sh' + 'op Vite]')} ${pc.cyan(`http://localhost:${port}/`)} ${pc.green(
'update success'
)} `
)
}
})
}
}