vite.config.cdn.ts 2.2 KB
import { resolve } from 'path';
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
import svgLoader from 'vite-svg-loader';
import vueSetupExtend from 'vite-plugin-vue-setup-extend';
import VitePluginOss from 'vite-plugin-oss';

const config = {
  VITE_OSS_ACCESS_KEY: 'LTAI5t7LPdTdw9bSY7JUJmyG',
  VITE_OSS_ACCESS_SECRET: 'qBiMksMt7DakR5cLQc03LCcsdwhPH1',
  VITE_OSS_BUCKET: 'hising',
  VITE_OSS_REGION: 'oss-cn-hangzhou',
  VITE_OSS_HOST: 'https://hising-cdn.hikoon.com',
  VITE_OSS_ENDPOINT: 'https://hising.oss-cn-hangzhou.aliyuncs.com',
};

const ossPath = `vendor/manage/asset${new Date()
  .toLocaleString('zh')
  .slice(0, 20)
  .replace(/[\s/:]/g, '')}`;

export default defineConfig({
  mode: 'production',
  base: config.VITE_OSS_HOST,
  server: { https: true },
  plugins: [
    vue(),
    vueJsx(),
    vueSetupExtend(),
    svgLoader({ svgoConfig: {} }),
    VitePluginOss({
      from: `./dist/${ossPath}/**`,
      accessKeyId: config.VITE_OSS_ACCESS_KEY,
      accessKeySecret: config.VITE_OSS_ACCESS_SECRET,
      bucket: config.VITE_OSS_BUCKET,
      region: config.VITE_OSS_REGION,
      quitWpOnError: true,
    }),
  ],
  resolve: {
    alias: [
      {
        find: '@',
        replacement: resolve(__dirname, '../src'),
      },
      {
        find: 'assets',
        replacement: resolve(__dirname, '../src/assets'),
      },
      {
        find: 'vue-i18n',
        replacement: 'vue-i18n/dist/vue-i18n.cjs.js', // Resolve the i18n warning issue
      },
      {
        find: 'vue',
        replacement: 'vue/dist/vue.esm-bundler.js', // compile template. you can remove it, if you don't need.
      },
    ],
    extensions: ['.ts', '.js'],
  },
  define: {
    'process.env': {
      VITE_ENV: 'production',
      VITE_API_HOST: 'https://hising.hikoon.com',
      VITE_SHOW_LOGIN_ACCOUNT: false,
      ...config,
    },
  },
  build: {
    assetsDir: ossPath,
    rollupOptions: {
      output: {
        manualChunks: {
          arco: ['@arco-design/web-vue'],
          chart: ['echarts', 'vue-echarts'],
          vue: ['vue', 'vue-router', 'pinia', '@vueuse/core', 'vue-i18n'],
        },
      },
    },
    chunkSizeWarningLimit: 2000,
  },
});