On remplace la configuration par défaut de Vite, pour que NestJS puisse la détecter.
Jusqu'à présent, nous n'avions pas touché au fichier de configuration de notre application Remix.
On peut supprimer l'intégralité du fichier vite.config.ts
, et le remplacer par le code suivant :
1import { vitePlugin as remix } from '@remix-run/dev';2import { installGlobals } from '@remix-run/node';3import { resolve } from 'path';4import { flatRoutes } from 'remix-flat-routes';5import { defineConfig } from 'vite';6import tsconfigPaths from 'vite-tsconfig-paths';78const MODE = process.env.NODE_ENV;9installGlobals();1011export default defineConfig({12resolve: {13preserveSymlinks: true,14},15build: {16cssMinify: MODE === 'production',17sourcemap: true,18commonjsOptions: {19include: [/frontend/, /backend/, /node_modules/],20},21},22plugins: [23// cjsInterop({24// dependencies: ['remix-utils', 'is-ip', '@markdoc/markdoc'],25// }),26tsconfigPaths({}),27remix({28ignoredRouteFiles: ['**/*'],29future: {30v3_fetcherPersist: true,31},3233// When running locally in development mode, we use the built in remix34// server. This does not understand the vercel lambda module format,35// so we default back to the standard build output.36// ignoredRouteFiles: ['**/.*', '**/*.test.{js,jsx,ts,tsx}'],37serverModuleFormat: 'esm',3839routes: async (defineRoutes) => {40return flatRoutes('routes', defineRoutes, {41ignoredRouteFiles: [42'.*',43'**/*.css',44'**/*.test.{js,jsx,ts,tsx}',45'**/__*.*',46// This is for server-side utilities you want to colocate next to47// your routes without making an additional directory.48// If you need a route that includes "server" or "client" in the49// filename, use the escape brackets like: my-route.[server].tsx50// '**/*.server.*',51// '**/*.client.*',52],53// Since process.cwd() is the server directory, we need to resolve the path to remix project54appDir: resolve(__dirname, 'app'),55});56},57}),58],59});
Nous ajoutons une clé resolve, qui contient l'instruction preserveSymlinks: true
. Cela permet à Vite de résoudre les liens symboliques, et de ne pas les suivre. Cette option est nécessaire pour le bon fonctionnement de notre application.
Comme nous utilisons la librairie remix-flat-routes
, la déclaration appDir: resolve(__dirname, "app")
est également nécessaire pour que Vite puisse trouver les routes de notre application depuis NestJS.
Le reste de la configuration est propre à Remix.
Réessayons un build de notre application. Le problème devrait être résolu.
1npm run build