nuxt.config.ts 4.3 KB
Newer Older
qd01's avatar
qd01 committed
1 2
import process from 'node:process'
import { appDescription } from './app/constants/index'
zhangsan's avatar
zhangsan committed
3
import preload from './app/utils/preload'
qd01's avatar
qd01 committed
4

zhangsan's avatar
zhangsan committed
5
export default defineNuxtConfig({
qd01's avatar
1  
qd01 committed
6 7 8
  nitro: {
    devProxy: {
      '/api': {
zhangsan's avatar
zhangsan committed
9 10
        target: 'http://27.124.5.14:9012', // 你要代理的目标地址
        // target: 'https://www.mxr2020.com:6443/api', // 你要代理的目标地址
qd01's avatar
1  
qd01 committed
11 12
        changeOrigin: true,
        prependPath: true,
qd01's avatar
qd01 committed
13 14
        rewrite: (path: string) => path.replace(/^\/api/, ''),
      },
qd01's avatar
1  
qd01 committed
15 16 17 18 19 20 21
    },
    minify: true,
    compressPublicAssets: true,
    prerender: {
      crawlLinks: true,
    },
  },
qd01's avatar
qd01 committed
22

zhangsan's avatar
zhangsan committed
23
  modules: [
qd01's avatar
qd01 committed
24 25 26 27 28 29 30
    '@unocss/nuxt',
    '@nuxtjs/color-mode',
    '@nuxt/eslint',
    '@pinia/nuxt',
    'pinia-plugin-persistedstate/nuxt',
    '@varlet/nuxt',
    '@vant/nuxt',
zhangsan's avatar
zhangsan committed
31 32 33 34 35 36 37
  ],
  runtimeConfig: {
    public: {
      apiBase: process.env.NUXT_PUBLIC_API_BASE,
    },
  },
  plugins: [
qd01's avatar
qd01 committed
38
    '~/plugins/debounce.js',
zhangsan's avatar
zhangsan committed
39 40
  ],
  css: [
qd01's avatar
qd01 committed
41 42 43 44
    '@unocss/reset/tailwind.css',
    './app/styles/vars.css',
    './app/styles/global.css',
    './app/styles/default-theme.css',
zhangsan's avatar
zhangsan committed
45 46 47 48
  ],

  postcss: {
    plugins: {
qd01's avatar
qd01 committed
49
      'autoprefixer': {},
zhangsan's avatar
zhangsan committed
50 51

      // https://github.com/wswmsword/postcss-mobile-forever
qd01's avatar
qd01 committed
52 53
      'postcss-mobile-forever': {
        appSelector: '#__nuxt',
zhangsan's avatar
zhangsan committed
54 55 56 57 58
        viewportWidth: 375,
        maxDisplayWidth: 600,
        // devtools excluded
        exclude: /@nuxt/,
        border: true,
qd01's avatar
qd01 committed
59
        rootContainingBlockSelectorList: ['van-tabbar', 'van-popup'],
zhangsan's avatar
zhangsan committed
60 61 62 63 64
      },
    },
  },

  colorMode: {
qd01's avatar
qd01 committed
65 66 67 68
    classSuffix: '',
    preference: 'system',
    fallback: 'light',
    storageKey: 'nuxt-color-mode',
zhangsan's avatar
zhangsan committed
69 70 71 72
  },
  app: {
    pageTransition: {
      name: 'fade',
qd01's avatar
qd01 committed
73
      mode: 'out-in', // 默认值
zhangsan's avatar
zhangsan committed
74 75 76
    },
    layoutTransition: {
      name: 'fade',
qd01's avatar
qd01 committed
77
      mode: 'out-in', // 默认值
zhangsan's avatar
zhangsan committed
78 79
    },
    head: {
qd01's avatar
qd01 committed
80 81
      viewport: 'width=device-width,initial-scale=1,viewport-fit=cover',
      link: [{ rel: 'icon', href: '/favicon.ico', sizes: 'any' }],
zhangsan's avatar
zhangsan committed
82 83
      meta: [
        {
qd01's avatar
qd01 committed
84 85
          name: 'viewport',
          content: 'width=device-width, initial-scale=1, viewport-fit=cover',
zhangsan's avatar
zhangsan committed
86
        },
qd01's avatar
qd01 committed
87
        { name: 'description', content: appDescription },
zhangsan's avatar
zhangsan committed
88
        {
qd01's avatar
qd01 committed
89 90
          name: 'apple-mobile-web-app-status-bar-style',
          content: 'black-translucent',
zhangsan's avatar
zhangsan committed
91 92
        },
        {
qd01's avatar
qd01 committed
93 94 95
          name: 'theme-color',
          media: '(prefers-color-scheme: light)',
          content: '#ffffff',
zhangsan's avatar
zhangsan committed
96 97
        },
        {
qd01's avatar
qd01 committed
98 99 100
          name: 'theme-color',
          media: '(prefers-color-scheme: dark)',
          content: '#222222',
zhangsan's avatar
zhangsan committed
101 102 103 104 105 106
        },
      ],
      script: [
        { innerHTML: preload(), type: 'text/javascript', tagPosition: 'head' },
      ],
    },
qd01's avatar
1  
qd01 committed
107 108
    // buildAssetsDir: '/_nuxt/',
    // ssr: true,
zhangsan's avatar
zhangsan committed
109 110
  },
  vite: {
qd01's avatar
1  
qd01 committed
111
    plugins: [
qd01's avatar
1  
qd01 committed
112 113 114 115 116 117 118 119 120
      // obfuscatorPlugin({
      //   include: ["src/path/to/file.js", "path/anyjs/**/*.js", /foo.js$/],
      //   exclude: [/node_modules/],
      //   apply: "build",
      //   debugger: true,
      //   options: {
      //     debugProtection: true,
      //   },
      // }),
qd01's avatar
1  
qd01 committed
121
    ],
zhangsan's avatar
zhangsan committed
122
    build: {
qd01's avatar
qd01 committed
123
      target: 'es2015', // 已经正确设置为 es2015
qd01's avatar
1  
qd01 committed
124 125 126 127 128 129 130 131 132 133 134 135
      minify: 'terser',
      terserOptions: {
        compress: {
          drop_console: true,
        },
        format: {
          // 添加以下配置以确保生成更兼容的代码
          comments: false,
          safari10: true,
        },
        safari10: true,
      },
zhangsan's avatar
zhangsan committed
136 137
    },
    optimizeDeps: {
qd01's avatar
qd01 committed
138
      include: ['@intlify/core-base', '@intlify/shared', 'is-https'],
zhangsan's avatar
zhangsan committed
139 140 141 142 143 144
    },
  },

  experimental: {
    typedPages: true,
  },
qd01's avatar
1  
qd01 committed
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
  // generate: {
  //   // 在生成的文件名中包含哈希值
  //   subFolders: false,
  //   dir: 'dist',
  //   routes: ['/'],
  //   fallback: true,
  //   interval: 0,
  //   concurrency: 500,
  //   devtools: false,
  //   quiet: false,
  //   analyze: false,
  //   watch: false,
  //   cache: {
  //     maxAge: 1000 * 60 * 60 * 24 * 30 // 30 days
  //   },
  //   http2: {
  //     push: true,
  //     cache: {
  //       maxAge: 1000 * 60 * 60 * 24 * 30 // 30 days
  //     }
  //   },
  //   // 添加版本号或哈希值到文件名
  //   filenameHashing: true
  // },
zhangsan's avatar
zhangsan committed
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
  devtools: {
    enabled: true,
  },

  typescript: {
    shim: false,
  },

  features: {
    // For UnoCSS
    inlineStyles: false,
  },

  eslint: {
    config: {
      standalone: false,
    },
  },

  future: {
    compatibilityVersion: 4,
  },

qd01's avatar
qd01 committed
192
  compatibilityDate: '2024-09-24',
zhangsan's avatar
zhangsan committed
193

qd01's avatar
qd01 committed
194
})