Modification de la configuration Vite de Remix

On remplace la configuration par défaut de Vite, pour que NestJS puisse la détecter.

2 min read

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 :

frontend/vite.config.ts
1
import { vitePlugin as remix } from '@remix-run/dev';
2
import { installGlobals } from '@remix-run/node';
3
import { resolve } from 'path';
4
import { flatRoutes } from 'remix-flat-routes';
5
import { defineConfig } from 'vite';
6
import tsconfigPaths from 'vite-tsconfig-paths';
7
8
const MODE = process.env.NODE_ENV;
9
installGlobals();
10
11
export default defineConfig({
12
resolve: {
13
preserveSymlinks: true,
14
},
15
build: {
16
cssMinify: MODE === 'production',
17
sourcemap: true,
18
commonjsOptions: {
19
include: [/frontend/, /backend/, /node_modules/],
20
},
21
},
22
plugins: [
23
// cjsInterop({
24
// dependencies: ['remix-utils', 'is-ip', '@markdoc/markdoc'],
25
// }),
26
tsconfigPaths({}),
27
remix({
28
ignoredRouteFiles: ['**/*'],
29
future: {
30
v3_fetcherPersist: true,
31
},
32
33
// When running locally in development mode, we use the built in remix
34
// 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}'],
37
serverModuleFormat: 'esm',
38
39
routes: async (defineRoutes) => {
40
return flatRoutes('routes', defineRoutes, {
41
ignoredRouteFiles: [
42
'.*',
43
'**/*.css',
44
'**/*.test.{js,jsx,ts,tsx}',
45
'**/__*.*',
46
// This is for server-side utilities you want to colocate next to
47
// your routes without making an additional directory.
48
// If you need a route that includes "server" or "client" in the
49
// filename, use the escape brackets like: my-route.[server].tsx
50
// '**/*.server.*',
51
// '**/*.client.*',
52
],
53
// Since process.cwd() is the server directory, we need to resolve the path to remix project
54
appDir: 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.

Terminal
1
npm run build

Le build de notre application a réussi