html.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /**
  2. * Plugin to minimize and use ejs template syntax in index.html.
  3. * https://github.com/anncwb/vite-plugin-html
  4. */
  5. import type { PluginOption } from 'vite';
  6. import { createHtmlPlugin } from 'vite-plugin-html';
  7. import pkg from '../../../package.json';
  8. import { GLOB_CONFIG_FILE_NAME } from '../../constant';
  9. export function configHtmlPlugin(env: ViteEnv, isBuild: boolean, isQiankunMicro: boolean) {
  10. const { VITE_GLOB_APP_TITLE, VITE_PUBLIC_PATH } = env;
  11. const path = VITE_PUBLIC_PATH.endsWith('/') ? VITE_PUBLIC_PATH : `${VITE_PUBLIC_PATH}/`;
  12. const getAppConfigSrc = () => {
  13. return `${path || '/'}${GLOB_CONFIG_FILE_NAME}?v=${pkg.version}-${new Date().getTime()}`;
  14. };
  15. // 【JEECG作为乾坤子应用】补充静态资源前缀
  16. const {VITE_GLOB_QIANKUN_MICRO_APP_ENTRY} = env;
  17. const basePublicPath = isQiankunMicro ? VITE_GLOB_QIANKUN_MICRO_APP_ENTRY : '';
  18. const htmlPlugin: PluginOption[] = createHtmlPlugin({
  19. minify: isBuild,
  20. inject: {
  21. // 修改模板html的标题
  22. data: {
  23. title: VITE_GLOB_APP_TITLE,
  24. basePublicPath: basePublicPath,
  25. },
  26. // 将app.config.js文件注入到模板html中
  27. tags: isBuild
  28. ? [
  29. {
  30. tag: 'script',
  31. attrs: {
  32. src: getAppConfigSrc(),
  33. },
  34. },
  35. ]
  36. : [],
  37. },
  38. });
  39. return htmlPlugin;
  40. }