nuxt.config.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import AutoImport from "unplugin-auto-import/vite";
  2. import Components from "unplugin-vue-components/vite";
  3. import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
  4. import ElementPlus from "unplugin-element-plus/vite";
  5. // import { visualizer } from 'rollup-plugin-visualizer'
  6. const isDev = process.env.NODE_ENV === 'development';
  7. const appType = process.env.APP_TYPE;
  8. const SERVICE = process.env.SERVICE;
  9. export default defineNuxtConfig({
  10. ssr: false,
  11. nitro: {
  12. output: {
  13. dir: isDev ? undefined : `.output-${appType}`
  14. },
  15. preset: 'static'
  16. },
  17. postcss: {
  18. plugins: {
  19. 'postcss-px-to-viewport': {
  20. viewportWidth: 1920, // 设计稿宽度
  21. unitPrecision: 3,
  22. viewportUnit: 'vw',
  23. // selectorBlackList: ['ignore', 'no-vw'], // 不转换的类名
  24. minPixelValue: 1,
  25. mediaQuery: false,
  26. }
  27. }
  28. },
  29. css: [
  30. "@/assets/style/variable.scss",
  31. "@/assets/style/reset.scss",
  32. appType === 'user' ? "@/assets/style/base-en.scss" : '@/assets/style/base-zh.scss',
  33. "@/assets/style/base.scss",
  34. "@/assets/iconfont/iconfont.css",
  35. // "element-plus/dist/index.css",
  36. ],
  37. modules: ["@pinia/nuxt"],
  38. vite: {
  39. // Vite 在开发模式下会对第三方依赖(node_modules)做一次 预打包(pre-bundling),以便提高运行时性能。
  40. optimizeDeps: {
  41. include: [
  42. "element-plus",
  43. "axios",
  44. "qs",
  45. "pinia",
  46. "pinia-plugin-persistedstate",
  47. "@gtm-support/vue-gtm",
  48. "vue3-google-map",
  49. "vue3-slide-verify",
  50. "qrcanvas",
  51. ],
  52. },
  53. // SSR 打包时被内联进产物,而不是被当成外部依赖由 Node 直接加载
  54. ssr: {
  55. noExternal: ["@popperjs/core", "element-plus"],
  56. },
  57. css: {
  58. preprocessorOptions: {
  59. scss: {
  60. additionalData: '@use "@/assets/style/theme.scss" as *;',
  61. quietDeps: true, // 禁用 Deprecation Warning
  62. },
  63. },
  64. },
  65. plugins: [
  66. ElementPlus({}), // 自动按需引入样式
  67. AutoImport({
  68. resolvers: [ElementPlusResolver()],
  69. }),
  70. Components({
  71. resolvers: [ElementPlusResolver()],
  72. }),
  73. ],
  74. server: {
  75. proxy: {
  76. "/api": {
  77. target: 'http://54.46.9.88:8001/',
  78. // target: "http://xinke-alb-1217859923.ap-southeast-1.elb.amazonaws.com:18001",
  79. changeOrigin: true,
  80. rewrite: (path) => path.replace(/^\/api/, ""),
  81. },
  82. },
  83. hmr: {
  84. overlay: false, // 关闭 HMR 警告/错误弹窗
  85. },
  86. },
  87. build: {
  88. rollupOptions: {
  89. // 开启产物文件分析
  90. // plugins: [visualizer({ open: true })],
  91. },
  92. },
  93. },
  94. runtimeConfig: {
  95. public: {
  96. appType,
  97. supplierUrl: SERVICE === 'test' ? 'http://54.46.9.88:82/user/login' : 'https://seller.njnaexport.com/user/login',
  98. serverPath: SERVICE === 'test' ? 'http://54.46.9.88:8001/' : 'http://xinke-alb-1217859923.ap-southeast-1.elb.amazonaws.com:18001'
  99. }
  100. },
  101. app: {
  102. head: {
  103. htmlAttrs: {
  104. lang: "en",
  105. },
  106. },
  107. },
  108. });