import type { PluginOption } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import VueSetupExtend from 'vite-plugin-vue-setup-extend'
import VitePluginCertificate from 'vite-plugin-mkcert';
import { svgIconsPlugin } from './svgSprite'
<% if(userAnswer.needsUnocss) {%>import { unocssPlugin } from './unocss'<% } %>
<% if(userAnswer.needsAutoImport) {%>import { autoImportPlugin, autoComponentsPlugin } from './autoImport'<% } %>
<% if(userAnswer.needsPwa) {%>import { pwaPlugin } from './pwa'<% } %>
<% if(userAnswer.template === 'h5') {%>import { vConsolePlugin } from './vConsole'<% } %>
<% if(userAnswer.needsMock) {%>import { mockPlugin } from './mock'<% } %>

export const createVitePlugins = (viteEnv: ViteEnv, isBuild: boolean) => {
  <% if(userAnswer.needsPwa) {%>const { VITE_USE_PWA, VITE_TITLE } = viteEnv<% } %>
  <% if(userAnswer.template === 'h5') {%>const { VITE_ENV } = viteEnv<% } %>
  const vitePlugins: (PluginOption | PluginOption[])[] = [
    vue({
      reactivityTransform: true
    }),
    vueJsx(),
    VitePluginCertificate({
      source: 'coding',
    }),
    svgIconsPlugin(isBuild),
    isBuild && VueSetupExtend()
  ]
  <% if(userAnswer.needsUnocss) {%>vitePlugins.push(unocssPlugin())<%}%>
  <% if(userAnswer.needsAutoImport) {%>vitePlugins.push(autoImportPlugin())
  vitePlugins.push(autoComponentsPlugin())<%}%>
  <% if(userAnswer.needsPwa) {%>vitePlugins.push(pwaPlugin(VITE_USE_PWA, VITE_TITLE))<%}%>
  <% if(userAnswer.needsMock) {%>vitePlugins.push(mockPlugin(isBuild))<%}%>
  <% if(userAnswer.template === 'h5') {%>
  if (VITE_ENV !== 'production') {
    vitePlugins.push(vConsolePlugin())
  }
  <% } %>
  return vitePlugins
}
