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
 | 
						|
}
 |