mirror of
https://github.com/actualbudget/actual.git
synced 2026-03-11 20:44:32 -05:00
118 lines
2.9 KiB
TypeScript
118 lines
2.9 KiB
TypeScript
import path from 'path';
|
|
|
|
import { visualizer } from 'rollup-plugin-visualizer';
|
|
import { defineConfig } from 'vite';
|
|
import { nodePolyfills } from 'vite-plugin-node-polyfills';
|
|
import peggyLoader from 'vite-plugin-peggy-loader';
|
|
|
|
// https://vitejs.dev/config/
|
|
export default defineConfig(({ mode }) => {
|
|
const isDev = mode === 'development';
|
|
const outDir = path.resolve(__dirname, 'lib-dist/browser');
|
|
const crdtDir = path.resolve(__dirname, '../crdt');
|
|
|
|
return {
|
|
mode,
|
|
base: '/kcab/',
|
|
build: {
|
|
target: 'es2020',
|
|
outDir,
|
|
emptyOutDir: true,
|
|
lib: {
|
|
entry: path.resolve(__dirname, 'src/server/main.ts'),
|
|
name: 'backend',
|
|
formats: ['iife'],
|
|
fileName: () =>
|
|
isDev ? 'kcab.worker.dev.js' : `kcab.worker.[hash].js`,
|
|
},
|
|
rollupOptions: {
|
|
onwarn(warning, warn) {
|
|
// Suppress sourcemap warnings from peggy-loader
|
|
if (
|
|
warning.plugin === 'peggy-loader' &&
|
|
warning.message?.includes('Sourcemap')
|
|
) {
|
|
return;
|
|
}
|
|
|
|
// Use default warning handler for other warnings
|
|
warn(warning);
|
|
},
|
|
output: {
|
|
chunkFileNames: isDev
|
|
? '[name].kcab.worker.dev.js'
|
|
: '[id].[name].kcab.worker.[hash].js',
|
|
format: 'iife',
|
|
name: 'backend',
|
|
globals: {
|
|
buffer: 'Buffer',
|
|
'process/browser': 'process',
|
|
},
|
|
},
|
|
external: [],
|
|
},
|
|
sourcemap: true,
|
|
minify: isDev ? false : 'terser',
|
|
terserOptions: {
|
|
compress: {
|
|
drop_debugger: false,
|
|
},
|
|
mangle: false,
|
|
},
|
|
},
|
|
resolve: {
|
|
extensions: [
|
|
'.web.js',
|
|
'.web.ts',
|
|
'.web.tsx',
|
|
'.js',
|
|
'.ts',
|
|
'.tsx',
|
|
'.json',
|
|
],
|
|
alias: [
|
|
{
|
|
find: /^@actual-app\/crdt(\/.*)?$/,
|
|
replacement: path.resolve(crdtDir, 'src') + '$1',
|
|
},
|
|
],
|
|
},
|
|
define: {
|
|
'process.env': '{}',
|
|
'process.env.IS_DEV': JSON.stringify(isDev),
|
|
'process.env.PUBLIC_URL': JSON.stringify(process.env.PUBLIC_URL || '/'),
|
|
'process.env.ACTUAL_DATA_DIR': JSON.stringify('/'),
|
|
'process.env.ACTUAL_DOCUMENT_DIR': JSON.stringify('/documents'),
|
|
},
|
|
plugins: [
|
|
peggyLoader(),
|
|
nodePolyfills({
|
|
include: [
|
|
'process',
|
|
'stream',
|
|
'path',
|
|
'zlib',
|
|
'fs',
|
|
'assert',
|
|
'buffer',
|
|
],
|
|
globals: {
|
|
process: true,
|
|
global: true,
|
|
},
|
|
}),
|
|
visualizer({ template: 'raw-data', filename: `${outDir}/stats.json` }),
|
|
],
|
|
optimizeDeps: {
|
|
include: [
|
|
'buffer',
|
|
'process',
|
|
'assert',
|
|
'path-browserify',
|
|
'stream-browserify',
|
|
'browserify-zlib',
|
|
],
|
|
},
|
|
};
|
|
});
|