22
schangxiang@126.com
2025-05-16 cfc40ec33d286b9bf6106d32f20ee3e9533ed026
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import path from 'path'
import VueTypeImports from 'vite-plugin-vue-type-imports'
import copy from 'rollup-plugin-copy'
import { external } from './script/filterExternal'
// @ts-ignore
export default defineConfig(({ mode }) => {
  return {
    base: '/',
    plugins: [
      vueJsx(),
      vue({
        reactivityTransform: path.resolve(__dirname, 'src'),
      }),
      VueTypeImports(),
    ],
    resolve: {
      alias: {
        '@': path.resolve(__dirname, './src'),
        components: path.resolve(__dirname, './src/components'),
        sdk: path.resolve(__dirname, 'src/cms/sdk.es.js'),
      },
    },
    build: {
      outDir: 'dist/information-ui',
      target: 'ES2022',
      rollupOptions: {
        external,
        output: {
          globals: {
            vue: 'Vue',
            sdk: 'sdk',
          },
        },
        plugins: [
          copy({
            targets: [
              {
                src: [
                  'src/components/index.d.ts',
                  'src/components/package.json',
                  'src/components/.npmrc',
                ],
                dest: 'publish/information-ui',
              },
              {
                src: 'dist/information-ui/**',
                dest: 'publish/information-ui',
              },
            ],
          }),
        ],
      },
      lib: {
        entry: path.join(__dirname, `./src/components/index.ts`),
        name: 'InformationUI',
        formats: ['es'],
        fileName: (format) => {
          return `${format}/index.${format}.js`
        },
      },
    },
    publicDir: false,
    esbuild: {
      drop: mode !== 'development' ? [ 'debugger'] : [],
      keepNames: true,
    },
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: `
            @use "@/assets/styles/element.scss" as *;
          `,
        },
      },
    },
  }
})