mirror of
https://github.com/documenso/documenso.git
synced 2026-07-09 12:35:04 +10:00
125 lines
3.6 KiB
TypeScript
125 lines
3.6 KiB
TypeScript
import { createRequire } from 'node:module';
|
|
import path from 'node:path';
|
|
import { defaultOptions as devServerDefaults } from '@hono/vite-dev-server';
|
|
import { lingui } from '@lingui/vite-plugin';
|
|
import { reactRouter } from '@react-router/dev/vite';
|
|
import autoprefixer from 'autoprefixer';
|
|
import serverAdapter from 'hono-react-router-adapter/vite';
|
|
import tailwindcss from 'tailwindcss';
|
|
import { defineConfig, normalizePath } from 'vite';
|
|
import macrosPlugin from 'vite-plugin-babel-macros';
|
|
import { viteStaticCopy } from 'vite-plugin-static-copy';
|
|
import tsconfigPaths from 'vite-tsconfig-paths';
|
|
|
|
const require = createRequire(import.meta.url);
|
|
|
|
const pdfjsDistPath = path.dirname(require.resolve('pdfjs-dist/package.json'));
|
|
const cMapsDir = normalizePath(path.join(pdfjsDistPath, 'cmaps'));
|
|
|
|
/**
|
|
* Note: We load the env variables externally so we can have runtime enviroment variables
|
|
* for docker.
|
|
*
|
|
* Do not configure any envs here.
|
|
*/
|
|
export default defineConfig({
|
|
css: {
|
|
postcss: {
|
|
plugins: [tailwindcss, autoprefixer],
|
|
},
|
|
},
|
|
server: {
|
|
port: parseInt(process.env.PORT || '3000', 10),
|
|
strictPort: true,
|
|
},
|
|
plugins: [
|
|
viteStaticCopy({
|
|
targets: [
|
|
{
|
|
src: cMapsDir,
|
|
dest: 'static',
|
|
},
|
|
],
|
|
}),
|
|
reactRouter(),
|
|
macrosPlugin(),
|
|
lingui(),
|
|
tsconfigPaths(),
|
|
serverAdapter({
|
|
entry: 'server/router.ts',
|
|
getLoadContext: async () => {
|
|
const { getLoadContext } = await import('./server/load-context');
|
|
return getLoadContext();
|
|
},
|
|
exclude: [
|
|
// Spread the defaults but replace the /.css$/ rule so that Bull
|
|
// Board's static CSS at /api/jobs/board/static/** passes through to Hono.
|
|
...devServerDefaults.exclude.map((pattern) =>
|
|
pattern instanceof RegExp && pattern.source === '.*\\.css$' ? /^(?!\/api\/jobs\/board\/).*\.css$/ : pattern,
|
|
),
|
|
'/assets/**',
|
|
'/src/app/**',
|
|
/\?(?:inline|url|no-inline|raw|import(?:&(?:inline|url|no-inline|raw)?)?)$/,
|
|
],
|
|
}),
|
|
],
|
|
ssr: {
|
|
noExternal: ['react-dropzone', 'plausible-tracker'],
|
|
external: [
|
|
'@napi-rs/canvas',
|
|
'@node-rs/bcrypt',
|
|
'@prisma/client',
|
|
'@documenso/tailwind-config',
|
|
'playwright',
|
|
'playwright-core',
|
|
'@playwright/browser-chromium',
|
|
'pdfjs-dist',
|
|
'@google-cloud/kms',
|
|
'@google-cloud/secret-manager',
|
|
],
|
|
},
|
|
optimizeDeps: {
|
|
entries: ['./app/**/*', '../../packages/ui/**/*', '../../packages/lib/**/*'],
|
|
include: ['prop-types', 'file-selector', 'attr-accept'],
|
|
exclude: [
|
|
'node_modules',
|
|
'@napi-rs/canvas',
|
|
'@node-rs/bcrypt',
|
|
'sharp',
|
|
'playwright',
|
|
'playwright-core',
|
|
'@playwright/browser-chromium',
|
|
'lightningcss',
|
|
'fsevents',
|
|
],
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
https: 'node:https',
|
|
'.prisma/client/default': path.resolve(__dirname, '../../node_modules/.prisma/client/default.js'),
|
|
'.prisma/client/index-browser': path.resolve(__dirname, '../../node_modules/.prisma/client/index-browser.js'),
|
|
canvas: path.resolve(__dirname, './app/types/empty-module.ts'),
|
|
},
|
|
},
|
|
/**
|
|
* Note: Re run rollup again to build the server afterwards.
|
|
*
|
|
* See rollup.config.mjs which is used for that.
|
|
*/
|
|
build: {
|
|
rollupOptions: {
|
|
external: [
|
|
'@napi-rs/canvas',
|
|
'@node-rs/bcrypt',
|
|
'@aws-sdk/cloudfront-signer',
|
|
'@google-cloud/kms',
|
|
'@google-cloud/secret-manager',
|
|
'nodemailer',
|
|
/playwright/,
|
|
'@playwright/browser-chromium',
|
|
'skia-canvas',
|
|
],
|
|
},
|
|
},
|
|
});
|