mirror of
https://github.com/fantastic-admin/basic.git
synced 2026-10-07 13:48:38 +08:00
first commit
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
import banner from 'vite-plugin-banner'
|
||||
|
||||
export default function createBanner() {
|
||||
return banner(`
|
||||
/**
|
||||
* name: Fantastic-admin
|
||||
* homepage: https://hooray.gitee.io/fantastic-admin/
|
||||
*/
|
||||
`)
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import compression from 'vite-plugin-compression'
|
||||
|
||||
export default function createCompression(env) {
|
||||
const { VITE_BUILD_COMPRESS } = env
|
||||
const compressList = VITE_BUILD_COMPRESS.split(',')
|
||||
const plugin = []
|
||||
if (compressList.includes('gzip')) {
|
||||
plugin.push(
|
||||
compression({
|
||||
ext: '.gz',
|
||||
deleteOriginFile: false
|
||||
})
|
||||
)
|
||||
}
|
||||
if (compressList.includes('brotli')) {
|
||||
plugin.push(
|
||||
compression({
|
||||
ext: '.br',
|
||||
algorithm: 'brotliCompress',
|
||||
deleteOriginFile: false
|
||||
})
|
||||
)
|
||||
}
|
||||
return plugin
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
import htmlPlugin from 'vite-plugin-html'
|
||||
|
||||
export default function createHtml(env, isBuild) {
|
||||
const { VITE_APP_TITLE, VITE_APP_DEBUG_TOOL, VITE_APP_MODE } = env
|
||||
const html = htmlPlugin({
|
||||
inject: {
|
||||
injectData: {
|
||||
title: VITE_APP_TITLE,
|
||||
debugTool: VITE_APP_DEBUG_TOOL,
|
||||
appMode: VITE_APP_MODE
|
||||
}
|
||||
},
|
||||
minify: isBuild
|
||||
})
|
||||
return html
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
|
||||
import createRestart from './restart'
|
||||
import createHtml from './html'
|
||||
import createSvgIcon from './svg-icon'
|
||||
import createMock from './mock'
|
||||
import createCompression from './compression'
|
||||
import createSpritesmith from './spritesmith'
|
||||
import createBanner from './banner'
|
||||
|
||||
export default function createVitePlugins(viteEnv, isBuild = false) {
|
||||
const vitePlugins = [vue()]
|
||||
!isBuild && vitePlugins.push(createRestart())
|
||||
vitePlugins.push(createHtml(viteEnv, isBuild))
|
||||
vitePlugins.push(createSvgIcon(isBuild))
|
||||
vitePlugins.push(createMock())
|
||||
isBuild && vitePlugins.push(...createCompression(viteEnv))
|
||||
vitePlugins.push(...createSpritesmith())
|
||||
vitePlugins.push(createBanner())
|
||||
return vitePlugins
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import { viteMockServe } from 'vite-plugin-mock'
|
||||
|
||||
export default function createMock() {
|
||||
return viteMockServe({
|
||||
mockPath: 'src/mock',
|
||||
injectCode: `
|
||||
import { setupProdMockServer } from './mockProdServer';
|
||||
setupProdMockServer();
|
||||
`
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import ViteRestart from 'vite-plugin-restart'
|
||||
|
||||
export default function createRestart() {
|
||||
return ViteRestart({
|
||||
restart: [
|
||||
'.env.development'
|
||||
]
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
import spritesmith from 'vite-plugin-spritesmith'
|
||||
import fs from 'fs'
|
||||
|
||||
export default function createSpritesmith(isBuild) {
|
||||
const spriteDirnames = []
|
||||
fs.readdirSync('src/assets/sprites').map(dirname => {
|
||||
if (fs.statSync(`src/assets/sprites/${dirname}`).isDirectory()) {
|
||||
spriteDirnames.push(dirname)
|
||||
}
|
||||
})
|
||||
const plugin = []
|
||||
spriteDirnames.map(item => {
|
||||
plugin.push(
|
||||
spritesmith({
|
||||
watch: !isBuild,
|
||||
src: {
|
||||
cwd: `./src/assets/sprites/${item}`,
|
||||
glob: '*.png'
|
||||
},
|
||||
target: {
|
||||
image: `./src/assets/sprites/${item}.png`,
|
||||
css: [
|
||||
[
|
||||
`./src/assets/sprites/_${item}.scss`,
|
||||
{
|
||||
format: 'handlebars_based_template'
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
apiOptions: {
|
||||
cssImageRef: `@/assets/sprites/${item}.png`,
|
||||
spritesheet_info: {
|
||||
name: item,
|
||||
format: 'handlebars_based_template'
|
||||
}
|
||||
},
|
||||
customTemplates: {
|
||||
handlebars_based_template: './scss.template.hbs'
|
||||
},
|
||||
spritesmithOptions: {
|
||||
algorithm: 'binary-tree',
|
||||
padding: 10
|
||||
}
|
||||
})
|
||||
)
|
||||
})
|
||||
return plugin
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import svgIcon from 'vite-plugin-svg-icons'
|
||||
import path from 'path'
|
||||
|
||||
export default function createSvgIcon(isBuild) {
|
||||
return svgIcon({
|
||||
iconDirs: [path.resolve(process.cwd(), 'src/assets/icons/')],
|
||||
symbolId: 'icon-[dir]-[name]',
|
||||
svgoOptions: isBuild
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user