vite.config.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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 copy from 'rollup-plugin-copy'
  8. /* import analyze from 'rollup-plugin-analyzer'
  9. */ /* import { visualizer } from 'rollup-plugin-visualizer' */
  10. import { resolve } from 'pathe'
  11. import { bold, gray, lightGreen, yellow } from 'kolorist'
  12. import pkg from './package.json'
  13. function noop() {}
  14. const provider = process.env.PROVIDER || 'playwright'
  15. const browser = process.env.BROWSER || (provider === 'playwright' ? 'chromium' : 'chrome')
  16. // eslint-disable-next-line no-console
  17. console.log(`${lightGreen('▲')} ${gray('■')} ${yellow('●')} ${bold('Tres')} v${pkg.version}`)
  18. // https://vitejs.dev/config/
  19. export default defineConfig({
  20. server: {
  21. port: 5174,
  22. },
  23. plugins: [
  24. vue({
  25. isProduction: false,
  26. template: {
  27. compilerOptions: {
  28. isCustomElement: tag => tag.startsWith('Tres') && tag !== 'TresCanvas',
  29. },
  30. },
  31. }),
  32. dts({
  33. insertTypesEntry: true,
  34. }),
  35. banner({
  36. content: `/**\n * name: ${pkg.name}\n * version: v${
  37. pkg.version
  38. }\n * (c) ${new Date().getFullYear()}\n * description: ${pkg.description}\n * author: ${pkg.author}\n */`,
  39. }),
  40. Inspect(),
  41. ],
  42. test: {
  43. alias: {
  44. '@tresjs/core': resolve(__dirname, 'src/index.ts'),
  45. },
  46. // environment: 'jsdom',
  47. // globals: true,
  48. // threads: false,
  49. // environment: process.env.BROWSER_TEST ? 'node' : 'jsdom',
  50. globals: true,
  51. // threads: false,
  52. // isolate: !process.env.BROWSER_TEST,
  53. browser: {
  54. enabled: true,
  55. name: browser,
  56. headless: false,
  57. provider,
  58. isolate: false,
  59. },
  60. open: false,
  61. outputFile: './browser.json',
  62. reporters: ['json', {
  63. onInit: noop,
  64. onPathsCollected: noop,
  65. onCollected: noop,
  66. onFinished: noop,
  67. onTaskUpdate: noop,
  68. onTestRemoved: noop,
  69. onWatcherStart: noop,
  70. onWatcherRerun: noop,
  71. onServerRestart: noop,
  72. onUserConsoleLog: noop,
  73. }, 'default'],
  74. env: {
  75. BROWSER: browser,
  76. },
  77. },
  78. build: {
  79. lib: {
  80. entry: resolve(__dirname, 'src/index.ts'),
  81. name: 'tres',
  82. fileName: 'tres',
  83. },
  84. watch: {
  85. include: [resolve(__dirname, 'src')],
  86. },
  87. copyPublicDir: false,
  88. rollupOptions: {
  89. plugins: [
  90. copy({
  91. targets: [{ src: 'src/types/tres-components.d.ts', dest: 'dist/types' }],
  92. }),
  93. /* analyze(), */
  94. /* visualizer({
  95. open: true,
  96. gzipSize: true,
  97. brotliSize: true,
  98. }), */
  99. ],
  100. external: ['vue', '@vueuse/core', 'three'],
  101. output: {
  102. exports: 'named',
  103. // Provide global variables to use in the UMD build
  104. // for externalized deps
  105. globals: {
  106. 'vue': 'Vue',
  107. '@vueuse/core': 'VueUseCore',
  108. 'three': 'Three',
  109. },
  110. },
  111. },
  112. },
  113. optimizeDeps: {
  114. exclude: ['vue', 'three'],
  115. },
  116. })