Updated vite & ts config

This commit is contained in:
NicolasCantu 2025-11-25 00:20:33 +01:00
parent 86b488b492
commit 740a29688d
4 changed files with 103 additions and 100 deletions

14
src/vite-env.d.ts vendored Normal file
View File

@ -0,0 +1,14 @@
/// <reference types="vite/client" />
/// <reference types="vite-plugin-wasm/client" />
// Permet d'importer des fichiers HTML comme des chaînes de caractères
declare module '*.html?raw' {
const content: string;
export default content;
}
// Permet d'importer des fichiers CSS comme des chaînes de caractères (inline)
declare module '*.css?inline' {
const content: string;
export default content;
}

View File

@ -1,9 +1,8 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"noEmit": false,
"outDir": "./dist",
"module": "commonjs"
"noEmit": false, // Ici on peut vouloir émettre des fichiers si nécessaire, ou garder true pour juste check
"outDir": "./dist"
},
"exclude": ["node_modules", "dist"]
"exclude": ["node_modules", "dist", "**/*.spec.ts", "**/*.test.ts"]
}

View File

@ -1,29 +1,42 @@
{
"compilerOptions": {
"declaration": true,
"outDir": "./dist",
"target": "ESNext",
"lib": ["DOM", "DOM.Iterable", "ESNext", "webworker"],
"types": ["vite/client", "node"],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"useDefineForClassFields": true,
"module": "ESNext",
"moduleResolution": "Node",
"lib": ["ESNext", "DOM", "DOM.Iterable", "WebWorker"],
"skipLibCheck": true,
/* Mode Bundler (Vite) */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"experimentalDecorators": true,
"useDefineForClassFields": true,
"noEmit": true,
"jsx": "react-jsx",
"baseUrl": "./",
"noEmit": true, /* Vite s'occupe de générer les fichiers, tsc fait juste la vérif */
/* Qualité du code */
"strict": true, /* Active toutes les vérifications strictes */
"noUnusedLocals": false,
"noUnusedParameters": false,
"noFallthroughCasesInSwitch": true,
"allowJs": true, /* Permet d'importer du JS si besoin (ex: legacy) */
/* Chemins (Alias) */
"baseUrl": ".",
"paths": {
"@/*": ["src/*"],
"~/*": ["src/*"]
}
},
"include": ["src", "src/*/", "./vite.config.ts", "src/*.d.ts", "src/main.ts"],
"exclude": ["node_modules"]
/* Support des types Vite (client, workers, etc.) */
"types": ["vite/client"]
},
"include": [
"src/**/*.ts",
"src/**/*.d.ts",
"src/**/*.tsx",
"src/**/*.vue",
"src/**/*.html", /* Important pour les imports ?raw */
"vite.config.ts"
],
"exclude": ["node_modules", "dist"]
}

View File

@ -1,85 +1,62 @@
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue'; // or react from '@vitejs/plugin-react' if using React
import wasm from 'vite-plugin-wasm';
import {createHtmlPlugin} from 'vite-plugin-html';
import typescript from "@rollup/plugin-typescript";
import fs from 'fs'
import path from 'path'
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// import pluginTerminal from 'vite-plugin-terminal';
import { fileURLToPath, URL } from 'node:url';
export default defineConfig({
optimizeDeps: {
include: ['qrcode']
},
plugins: [
vue(), // or react() if using React
wasm(),
createHtmlPlugin({
minify: true,
template: 'index.html',
}),
typescript({
sourceMap: false,
declaration: true,
declarationDir: "dist/types",
rootDir: "src",
outDir: "dist",
}),
// pluginTerminal({
// console: 'terminal',
// output: ['terminal', 'console']
// })
],
build: {
outDir: 'dist',
target: 'esnext',
minify: false,
rollupOptions: {
input: './src/index.ts',
output: {
entryFileNames: 'index.js',
},
},
lib: {
entry: path.resolve(__dirname, 'src/router.ts'),
name: 'ihm-service',
formats: ['es'],
fileName: (format) => `ihm-service.${format}.js`,
},
},
resolve: {
alias: {
'@': '/src',
},
extensions: ['.ts', '.tsx', '.js'],
},
// Configuration du serveur de développement
server: {
fs: {
cachedChecks: false,
},
port: 3003,
host: '0.0.0.0', // Permet l'accès depuis l'extérieur (Docker/Réseau)
proxy: {
// Proxy pour le stockage
'/storage': {
target: 'https://dev3.4nkweb.com',
target: process.env.VITE_STORAGEURL || 'https://dev2.4nkweb.com',
changeOrigin: true,
secure: false, // Accepte les certificats auto-signés si besoin
rewrite: (path) => path.replace(/^\/storage/, '/storage'),
},
// Proxy pour les websockets (si besoin de contourner CORS ou SSL)
'/ws': {
target: process.env.VITE_BOOTSTRAPURL?.replace('ws', 'http') || 'https://dev2.4nkweb.com',
ws: true,
changeOrigin: true,
secure: false,
rewrite: (path) => path.replace(/^\/storage/, '/storage'),
configure: (proxy, _options) => {
proxy.on('error', (err, _req, _res) => {
console.log('proxy error', err);
});
proxy.on('proxyReq', (proxyReq, req, _res) => {
console.log('Sending Request:', req.method, req.url);
});
proxy.on('proxyRes', (proxyRes, req, _res) => {
console.log('Received Response:', proxyRes.statusCode, req.url);
});
}
}
}
},
// Proxy pour l'API BlindBit
'/blindbit': {
target: process.env.VITE_BLINDBITURL || 'https://dev2.4nkweb.com/blindbit',
changeOrigin: true,
secure: false,
rewrite: (path) => path.replace(/^\/blindbit/, ''),
},
},
},
// Plugins essentiels
plugins: [
wasm(), // Indispensable pour ton SDK Rust
],
// Alias pour les imports (ex: import ... from '@/services/...')
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),
'~': fileURLToPath(new URL('./src', import.meta.url)), // Rétro-compatibilité avec tes anciens imports
},
},
// Configuration du Build
build: {
target: 'esnext', // Nécessaire pour le "Top Level Await" souvent utilisé avec WASM
outDir: 'dist',
assetsDir: 'assets',
emptyOutDir: true, // Vide le dossier dist avant chaque build
// On retire la config "lib" car c'est maintenant une App autonome
},
// Configuration spécifique pour les Workers (Database)
worker: {
format: 'es',
plugins: () => [wasm()],
},
});