41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
| /**
 | |
|  * Plugin to minimize and use ejs template syntax in index.html.
 | |
|  * https://github.com/xingyuv/vite-vue-plugin-html
 | |
|  */
 | |
| import type { PluginOption } from 'vite'
 | |
| import { createHtmlPlugin } from 'vite-vue-plugin-html'
 | |
| import pkg from '../../../package.json'
 | |
| import { GLOB_CONFIG_FILE_NAME } from '../../constant'
 | |
| 
 | |
| export function configHtmlPlugin(env: ViteEnv, isBuild: boolean) {
 | |
|   const { VITE_GLOB_APP_TITLE, VITE_PUBLIC_PATH } = env
 | |
| 
 | |
|   const path = VITE_PUBLIC_PATH.endsWith('/') ? VITE_PUBLIC_PATH : `${VITE_PUBLIC_PATH}/`
 | |
| 
 | |
|   const getAppConfigSrc = () => {
 | |
|     return `${path || '/'}${GLOB_CONFIG_FILE_NAME}?v=${pkg.version}-${new Date().getTime()}`
 | |
|   }
 | |
| 
 | |
|   const htmlPlugin: PluginOption[] = createHtmlPlugin({
 | |
|     minify: isBuild,
 | |
|     inject: {
 | |
|       // Inject data into ejs template
 | |
|       data: {
 | |
|         title: VITE_GLOB_APP_TITLE,
 | |
|       },
 | |
|       // Embed the generated app.config.js file
 | |
|       tags: isBuild
 | |
|         ? [
 | |
|             {
 | |
|               tag: 'script',
 | |
|               attrs: {
 | |
|                 src: getAppConfigSrc(),
 | |
|               },
 | |
|             },
 | |
|           ]
 | |
|         : [],
 | |
|     },
 | |
|   })
 | |
|   return htmlPlugin
 | |
| }
 |