vite.config.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * @Descripttion:
  3. * @version: 1.0.0
  4. * @Author: htang
  5. * @Date: 2024-07-15 16:33:33
  6. * @LastEditors: htang
  7. * @LastEditTime: 2024-08-24 14:38:23
  8. */
  9. import { defineConfig, loadEnv } from "vite";
  10. import vue from "@vitejs/plugin-vue";
  11. import { OUTPUT_DIR } from './build/constant';
  12. import path from "path";
  13. const TimeStamp = new Date().getTime();
  14. function resolve(url) {
  15. return path.resolve(__dirname, url);
  16. }
  17. // https://vitejs.dev/config/
  18. export default ({ mode }) => {
  19. // 获取环境变量
  20. const env = loadEnv(mode, process.cwd());
  21. return defineConfig({
  22. base: './', //env.VITE_APP_BASE_URL, // 动态改变base值
  23. assetsInclude: [
  24. "**/*.glb",
  25. "**/*.gltf",
  26. "**/*.fbx",
  27. "**/*.hdr",
  28. "**/*.json",
  29. "**/*.mp4",
  30. "**/*.mov",
  31. ],
  32. resolve: {
  33. alias: {
  34. "@": resolve("./src"),
  35. "~@": resolve("./src"),
  36. },
  37. // 省略文件后缀
  38. extensions: [".mjs", ".js", ".jsx", ".json"],
  39. },
  40. build: {
  41. minify: 'esbuild',
  42. target: 'es2015',
  43. cssTarget: 'chrome80',
  44. outDir: OUTPUT_DIR,
  45. terserOptions: {
  46. compress: {
  47. // keep_infinity: true,
  48. // // Used to delete console in production environment
  49. // drop_console: VITE_DROP_CONSOLE,
  50. // drop_debugger: true,
  51. },
  52. },
  53. // Turning off brotliSize display can slightly reduce packaging time
  54. reportCompressedSize: false,
  55. chunkSizeWarningLimit: 2000,
  56. rollupOptions: {
  57. // 参考:https://blog.cinob.cn/archives/393
  58. output: {
  59. // 入口文件名
  60. entryFileNames: `assets/[name]-${TimeStamp}.js`,
  61. // 块文件名
  62. chunkFileNames: `assets/[name]-[hash]-${TimeStamp}.js`,
  63. // 资源文件名 css 图片等等
  64. assetFileNames: `assets/[name]-[hash]-balabala-${TimeStamp}.[ext]`,
  65. }
  66. }
  67. },
  68. envDir: 'env',
  69. plugins: [vue()],
  70. });
  71. };