import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import { wasm } from '@rollup/plugin-wasm'; import { viteStaticCopy } from 'vite-plugin-static-copy'; import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill'; import rollupNodePolyFill from 'rollup-plugin-node-polyfills' import { svgLoader } from './viteSvgLoader'; const copyFiles = { targets: [ { src: 'node_modules/@matrix-org/olm/olm.wasm', dest: '', }, { src: '_redirects', dest: '', }, { src: 'config.json', dest: '', }, { src: 'public/res/android', dest: 'public/', } ], } const nodePolyfillAliases = { // https://github.com/ionic-team/rollup-plugin-node-polyfills/tree/master/polyfills util: 'rollup-plugin-node-polyfills/polyfills/util', // sys: 'util', // events: 'rollup-plugin-node-polyfills/polyfills/events', stream: 'rollup-plugin-node-polyfills/polyfills/stream', path: 'rollup-plugin-node-polyfills/polyfills/path', querystring: 'rollup-plugin-node-polyfills/polyfills/qs', // punycode: 'rollup-plugin-node-polyfills/polyfills/punycode', url: 'rollup-plugin-node-polyfills/polyfills/url', // string_decoder: 'rollup-plugin-node-polyfills/polyfills/string-decoder', // http: 'rollup-plugin-node-polyfills/polyfills/http', // https: 'rollup-plugin-node-polyfills/polyfills/http', // os: 'rollup-plugin-node-polyfills/polyfills/os', assert: 'rollup-plugin-node-polyfills/polyfills/assert', // constants: 'rollup-plugin-node-polyfills/polyfills/constants', // _stream_duplex: // 'rollup-plugin-node-polyfills/polyfills/readable-stream/duplex', // _stream_passthrough: // 'rollup-plugin-node-polyfills/polyfills/readable-stream/passthrough', // _stream_readable: // 'rollup-plugin-node-polyfills/polyfills/readable-stream/readable', // _stream_writable: // 'rollup-plugin-node-polyfills/polyfills/readable-stream/writable', // _stream_transform: // 'rollup-plugin-node-polyfills/polyfills/readable-stream/transform', // timers: 'rollup-plugin-node-polyfills/polyfills/timers', // console: 'rollup-plugin-node-polyfills/polyfills/console', // vm: 'rollup-plugin-node-polyfills/polyfills/vm', // zlib: 'rollup-plugin-node-polyfills/polyfills/zlib', // tty: 'rollup-plugin-node-polyfills/polyfills/tty', // domain: 'rollup-plugin-node-polyfills/polyfills/domain', buffer: 'rollup-plugin-node-polyfills/polyfills/buffer-es6', // process: 'rollup-plugin-node-polyfills/polyfills/process-es6', } export default defineConfig({ appType: 'spa', publicDir: false, server: { port: 8080, host: true, }, plugins: [ viteStaticCopy(copyFiles), svgLoader(), wasm(), react(), ], resolve: { alias: nodePolyfillAliases }, optimizeDeps: { esbuildOptions: { define: { global: 'globalThis' }, plugins: [ // Enable esbuild polyfill plugins NodeGlobalsPolyfillPlugin({ process: false, buffer: true, }), ] } }, build: { outDir: 'dist', sourcemap: true, copyPublicDir: false, rollupOptions: { plugins: [ // Enable rollup polyfills plugin // used during production bundling rollupNodePolyFill({ crypto: true, fs: true }), ] } }, });