vite.config.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { createVitePlugins } from './build/vite/plugins';
  2. import { resolve } from 'path';
  3. import { ConfigEnv, loadEnv, UserConfig } from 'vite';
  4. import { wrapperEnv } from './build/utils';
  5. const pathResolve = (dir: string) => {
  6. return resolve(process.cwd(), '.', dir);
  7. };
  8. // https://vitejs.dev/config/
  9. export default function ({ command, mode }: ConfigEnv): UserConfig {
  10. const isProduction = command === 'build';
  11. const root = process.cwd();
  12. const env = loadEnv(mode, root);
  13. const viteEnv = wrapperEnv(env);
  14. return {
  15. root,
  16. resolve: {
  17. alias: [
  18. {
  19. find: 'vue-i18n',
  20. replacement: 'vue-i18n/dist/vue-i18n.cjs.js',
  21. },
  22. // /@/xxxx => src/xxxx
  23. {
  24. find: /\/@\//,
  25. replacement: pathResolve('src') + '/',
  26. },
  27. // /#/xxxx => types/xxxx
  28. {
  29. find: /\/#\//,
  30. replacement: pathResolve('types') + '/',
  31. },
  32. ],
  33. },
  34. server: {
  35. host: true,
  36. hmr: true,
  37. },
  38. plugins: createVitePlugins(viteEnv, isProduction),
  39. build: {
  40. minify: 'terser',
  41. terserOptions: {
  42. compress: {
  43. //生产环境时移除console
  44. drop_console: true,
  45. drop_debugger: true,
  46. },
  47. },
  48. },
  49. css: {
  50. preprocessorOptions: {
  51. scss: {
  52. // 配置 nutui 全局 scss 变量
  53. additionalData: `@import "@nutui/nutui/dist/styles/variables.scss";@import '/@/styles/mixin.scss';`,
  54. },
  55. },
  56. },
  57. };
  58. }