import path from 'path'; import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import AutoImport from 'unplugin-auto-import/vite'; import Components from 'unplugin-vue-components/vite'; import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'; import GlobalsPolyfills from '@esbuild-plugins/node-globals-polyfill'; import NodeModulesPolyfills from '@esbuild-plugins/node-modules-polyfill'; import { VitePWA } from 'vite-plugin-pwa'; import commonjs from 'vite-plugin-commonjs'; import replace from '@rollup/plugin-replace'; import { viteStaticCopy } from 'vite-plugin-static-copy'; export default defineConfig({ optimizeDeps: { esbuildOptions: { define: { global: 'globalThis', }, plugins: [ GlobalsPolyfills({ process: true, buffer: true, }), ], }, }, resolve: { extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'], alias: { '@': path.resolve(__dirname, './src'), process: 'rollup-plugin-node-polyfills/polyfills/process-es6', stream: 'rollup-plugin-node-polyfills/polyfills/stream', util: 'rollup-plugin-node-polyfills/polyfills/util', }, }, plugins: [ commonjs(), NodeModulesPolyfills(), vue(), AutoImport({ resolvers: [ElementPlusResolver()], }), Components({ resolvers: [ElementPlusResolver()], }), VitePWA({ registerType: 'autoUpdate', manifest: { name: '音乐解锁', theme_color: '#4DBA87', description: '在任何设备上解锁已购的加密音乐!', icons: [ { src: 'assets/img/icons/android-chrome-192x192.png', sizes: '192x192', type: 'image/png', }, { src: 'assets/img/icons/android-chrome-512x512.png', sizes: '512x512', type: 'image/png', }, ], }, }), replace({ preventAssignment: false, values: { 'global.': 'window.', }, }), viteStaticCopy({ targets: [ { src: 'img', dest: 'assets', }, ], }), ], });