You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
			
		
		
		
			
				
					41 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					41 lines
				
				1.1 KiB
			| 
											3 years ago
										 | /**
 | ||
|  |  * Plugin to minimize and use ejs template syntax in index.html.
 | ||
|  |  * https://github.com/anncwb/vite-plugin-html
 | ||
|  |  */
 | ||
|  | import type { PluginOption } from 'vite'
 | ||
|  | import { createHtmlPlugin } from 'vite-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
 | ||
|  | }
 |