vite.config.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /// <reference types="vitest" />
  2. import { defineConfig } from 'vite'
  3. import vue from '@vitejs/plugin-vue'
  4. import banner from 'vite-plugin-banner'
  5. import Inspect from 'vite-plugin-inspect'
  6. import dts from 'vite-plugin-dts'
  7. import Components from 'unplugin-vue-components/vite'
  8. import { ViteTresPlugin } from './plugins/vite-plugin-tres'
  9. import analyze from 'rollup-plugin-analyzer'
  10. import { visualizer } from 'rollup-plugin-visualizer'
  11. import { resolve } from 'pathe'
  12. import { lightGreen, yellow, gray, bold } from 'kolorist'
  13. import pkg from './package.json'
  14. // eslint-disable-next-line no-console
  15. console.log(`${lightGreen('▲')} ${gray('■')} ${yellow('●')} ${bold('Tres')} v${pkg.version}`)
  16. // https://vitejs.dev/config/
  17. export default defineConfig({
  18. server: {
  19. port: 5174,
  20. },
  21. resolve: {
  22. alias: {
  23. '/@': resolve(__dirname, './src'),
  24. '#tres': resolve(__dirname, '.tres'),
  25. },
  26. dedupe: ['@tresjs/cientos'],
  27. },
  28. plugins: [
  29. vue({
  30. isProduction: false,
  31. }),
  32. ViteTresPlugin(),
  33. dts({
  34. insertTypesEntry: true,
  35. include: ['.tres/components/**/*.ts'],
  36. }),
  37. banner({
  38. content: `/**\n * name: ${pkg.name}\n * version: v${
  39. pkg.version
  40. }\n * (c) ${new Date().getFullYear()}\n * description: ${pkg.description}\n * author: ${pkg.author}\n */`,
  41. }),
  42. Inspect(),
  43. ],
  44. test: {
  45. environment: 'jsdom',
  46. globals: true,
  47. threads: false,
  48. alias: {
  49. '/@': resolve(__dirname, './src'),
  50. },
  51. },
  52. build: {
  53. lib: {
  54. entry: resolve(__dirname, 'src/index.ts'),
  55. name: 'tres',
  56. fileName: 'tres',
  57. },
  58. watch: {
  59. include: [resolve(__dirname, 'src')],
  60. },
  61. copyPublicDir: false,
  62. rollupOptions: {
  63. plugins: [
  64. /* analyze(), */
  65. visualizer({
  66. open: true,
  67. gzipSize: true,
  68. brotliSize: true,
  69. }),
  70. ],
  71. external: ['vue', '@vueuse/core', 'three'],
  72. output: {
  73. exports: 'named',
  74. // Provide global variables to use in the UMD build
  75. // for externalized deps
  76. globals: {
  77. vue: 'Vue',
  78. '@vueuse/core': 'VueUseCore',
  79. three: 'Three',
  80. },
  81. },
  82. },
  83. },
  84. optimizeDeps: {
  85. exclude: ['vue', 'three'],
  86. },
  87. })