/// import path from 'path' import { fileURLToPath } from 'url' import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import svgr from 'vite-plugin-svgr' import { nodePolyfills } from 'vite-plugin-node-polyfills' import macrosPlugin from 'vite-plugin-babel-macros' import { VitePWA } from 'vite-plugin-pwa' import { manifest } from './manifest' const srcPaths = [ 'components', 'config', 'contexts', 'lib', 'models', 'pages', 'services', 'img', 'utils', 'test-utils', ] const srcPathAliases = srcPaths.reduce((acc, dir) => { acc[dir] = path.resolve(__dirname, `./src/${dir}`) return acc }, {}) const config = () => { return defineConfig({ // NOTE: Uncomment this if you are hosting Chitchatter on GitHub Pages // without a custom domain. If you renamed the repo to something other than // "chitchatter", then use that instead of "chitchatter" here. // base: '/chitchatter/', build: { // NOTE: This isn't really working. At the very least, it's still useful // for exposing source code to users. // See: https://github.com/vitejs/vite/issues/15012#issuecomment-1956429165 sourcemap: true, }, plugins: [ svgr({ include: '**/*.svg?react', }), react(), macrosPlugin(), nodePolyfills({ globals: { Buffer: true, global: true, process: true, }, protocolImports: true, }), VitePWA({ registerType: 'prompt', devOptions: { enabled: false, }, injectRegister: 'auto', filename: 'service-worker.js', manifest, }), ], resolve: { alias: { webtorrent: fileURLToPath( new URL( './node_modules/webtorrent/webtorrent.min.js', import.meta.url ) ), ...srcPathAliases, }, }, test: { globals: true, environment: 'jsdom', setupFiles: './src/setupTests.ts', coverage: { reporter: ['text', 'html'], exclude: ['node_modules/', 'src/setupTests.ts'], }, }, }) } export default config