版博士V2.0程序
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 

161 行
4.3 KiB

  1. import { resolve } from 'path'
  2. import { env } from './shared/env'
  3. import Vue from '@vitejs/plugin-vue'
  4. import Icons from 'unplugin-icons/vite'
  5. import Inspect from 'vite-plugin-inspect'
  6. import Markdown from './plugins/markdown'
  7. import Windicss from 'vite-plugin-windicss'
  8. import vueJsx from '@vitejs/plugin-vue-jsx'
  9. import Rmovelog from 'vite-plugin-removelog'
  10. import { viteMockServe } from 'vite-plugin-mock'
  11. import VueRouter from 'unplugin-vue-router/vite'
  12. import Layouts from 'vite-plugin-vue-meta-layouts'
  13. import AutoImport from 'unplugin-auto-import/vite'
  14. import IconsResolver from 'unplugin-icons/resolver'
  15. import Components from 'unplugin-vue-components/vite'
  16. import viteCompression from 'vite-plugin-compression'
  17. import { markdownWrapperClasses } from './plugins/markdown'
  18. import { VueRouterAutoImports } from 'unplugin-vue-router'
  19. import I18N from '@intlify/unplugin-vue-i18n/vite'
  20. import {
  21. ArcoResolver,
  22. IduxResolver,
  23. VantResolver,
  24. DevUiResolver,
  25. QuasarResolver,
  26. ViewUiResolver,
  27. InklineResolver,
  28. TDesignResolver,
  29. NaiveUiResolver,
  30. Vuetify3Resolver,
  31. VarletUIResolver,
  32. LayuiVueResolver,
  33. PrimeVueResolver,
  34. HeadlessUiResolver,
  35. ElementPlusResolver,
  36. AntDesignVueResolver,
  37. VueUseComponentsResolver,
  38. } from 'unplugin-vue-components/resolvers'
  39. import Modules from 'vite-plugin-use-modules'
  40. import { GenerateTitle } from './plugins/html'
  41. // @ts-ignore
  42. import VueMarcos from 'unplugin-vue-macros/vite'
  43. import { AutoImportResolvers, normalizeResolvers } from './shared/resolvers'
  44. export default () => {
  45. return [
  46. // https://github.com/sxzz/unplugin-vue-macros/blob/main/README-zh-CN.md
  47. VueMarcos({
  48. hoistStatic: true,
  49. defineOptions: true,
  50. }),
  51. // https://github.com/posva/unplugin-vue-router
  52. VueRouter({
  53. routesFolder: 'src/pages',
  54. extensions: ['.md', '.vue', '.tsx'],
  55. dts: 'presets/types/type-router.d.ts',
  56. }),
  57. // 模块自动加载
  58. Modules({
  59. auto: true,
  60. }),
  61. // 生成 title
  62. GenerateTitle(),
  63. // vue 官方插件,用来解析 sfc
  64. Vue({
  65. include: [/\.vue$/, /\.md$/],
  66. }),
  67. // markdown 编译插件
  68. Markdown(),
  69. // 布局系统
  70. Layouts(),
  71. // 调试工具
  72. Inspect({
  73. enabled: env.VITE_APP_INSPECT,
  74. }),
  75. // windicss 插件
  76. Windicss({
  77. safelist: markdownWrapperClasses,
  78. }),
  79. // mock 服务
  80. viteMockServe({
  81. prodEnabled: env.VITE_APP_MOCK_IN_PRODUCTION,
  82. }),
  83. // https://icones.netlify.app/
  84. Icons({
  85. autoInstall: true,
  86. }),
  87. // 组件自动按需引入
  88. Components({
  89. extensions: ['md', 'vue', 'tsx'],
  90. dts: resolve(__dirname, './types/components.d.ts'),
  91. types: [
  92. {
  93. from: 'vue-router',
  94. names: ['RouterLink', 'RouterView'],
  95. },
  96. ],
  97. resolvers: normalizeResolvers({
  98. onlyExist: [
  99. [VantResolver(), 'vant'],
  100. [QuasarResolver(), 'quasar'],
  101. [DevUiResolver(), 'vue-devui'],
  102. [NaiveUiResolver(), 'naive-ui'],
  103. [Vuetify3Resolver(), 'vuetify'],
  104. [PrimeVueResolver(), 'primevue'],
  105. [ViewUiResolver(), 'view-design'],
  106. [LayuiVueResolver(), 'layui-vue'],
  107. [VarletUIResolver(), '@varlet/ui'],
  108. [IduxResolver(), '@idux/components'],
  109. [TDesignResolver(), 'tdesign-vue-next'],
  110. [InklineResolver(), '@inkline/inkline'],
  111. [ElementPlusResolver(), 'element-plus'],
  112. [HeadlessUiResolver(), '@headlessui/vue'],
  113. [ArcoResolver(), '@arco-design/web-vue'],
  114. [AntDesignVueResolver(), 'ant-design-vue'],
  115. [VueUseComponentsResolver(), '@vueuse/components'],
  116. ],
  117. include: [IconsResolver()],
  118. }),
  119. }),
  120. // api 自动按需引入
  121. env.VITE_APP_API_AUTO_IMPORT &&
  122. AutoImport({
  123. dirs: [
  124. env.VITE_APP_API_AUTO_IMPORT && 'src/stores/**/*.ts',
  125. env.VITE_APP_API_AUTO_IMPORT && 'src/composables/**/*.ts',
  126. ],
  127. dts: './presets/types/auto-imports.d.ts',
  128. imports: [
  129. 'vue',
  130. 'pinia',
  131. 'vue-i18n',
  132. '@vueuse/core',
  133. VueRouterAutoImports,
  134. ],
  135. resolvers: AutoImportResolvers,
  136. eslintrc: {
  137. enabled: true,
  138. globalsPropValue: true,
  139. filepath: 'presets/eslint/.eslintrc-auto-import.json',
  140. },
  141. }),
  142. // i18n 国际化支持
  143. I18N({
  144. runtimeOnly: false,
  145. compositionOnly: true,
  146. include: [resolve(__dirname, '../locales/**')],
  147. }),
  148. // tsx 支持
  149. vueJsx(),
  150. // 生产环境资源压缩
  151. viteCompression({
  152. // @ts-ignore
  153. algorithm: env.VITE_APP_COMPRESSINON_ALGORITHM,
  154. }),
  155. // 生产环境下移除 console.log, console.warn, console.error
  156. // Rmovelog(),
  157. ]
  158. }