cinny/vite.config.js

87 lines
1.8 KiB
JavaScript

import { defineConfig } from 'vite';
import { wasm } from '@rollup/plugin-wasm';
import { viteStaticCopy } from 'vite-plugin-static-copy';
import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill';
import inject from '@rollup/plugin-inject';
import { svgLoader } from './viteSvgLoader';
import { preact } from '@preact/preset-vite';
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/',
}
],
}
export default defineConfig({
appType: 'spa',
publicDir: false,
base: "",
server: {
port: 8080,
host: true,
},
plugins: [
viteStaticCopy(copyFiles),
svgLoader(),
wasm(),
preact(),
],
optimizeDeps: {
esbuildOptions: {
define: {
global: 'globalThis'
},
plugins: [
// Enable esbuild polyfill plugins
NodeGlobalsPolyfillPlugin({
process: false,
buffer: true,
}),
]
}
},
build: {
outDir: 'dist',
sourcemap: true,
copyPublicDir: false,
rollupOptions: {
plugins: [
inject({ Buffer: ['buffer', 'Buffer'] })
],
output: {
manualChunks: (id) => {
if (id.includes("node_modules")) {
if (id.includes("matrix")) {
return "vendor-matrix";
}
if (id.includes("emojibase")) {
return "vendor-emojibase";
}
return "vendor";
}
}
},
treeshake: "smallest"
},
},
resolve: {
alias: {
"react/jsx-runtime.js": "preact/compat/jsx-runtime"
}
},
});