ldc-ker-chant/vite.config.ts
2026-07-10 11:32:24 +02:00

106 lines
2.5 KiB
TypeScript

import path from "path";
import react from "@vitejs/plugin-react";
import laravel from "laravel-vite-plugin";
import copy from "rollup-plugin-copy";
import { defineConfig } from "vite";
import eslint from "vite-plugin-eslint";
import stylelint from "vite-plugin-stylelint";
import tailwindcss from "@tailwindcss/vite";
const debugMode = ["local", "development"].includes(process.env.NODE_ENV ?? "");
const browserTargets = [
"es2019",
"edge92",
"firefox88",
"chrome92",
"safari15",
];
export default defineConfig({
build: {
chunkSizeWarningLimit: 1500,
target: browserTargets,
rollupOptions: {
output: {
entryFileNames: (chunkInfo) => {
if (chunkInfo.name === "ssr") return "ssr.js";
return `assets/${debugMode ? "[name]-" : ""}[hash].js`;
},
chunkFileNames: `assets/${debugMode ? "[name]-" : ""}[hash].js`,
},
},
emptyOutDir: true,
sourcemap: debugMode ? "inline" : false,
cssTarget: browserTargets,
},
plugins: [
laravel({
input: [
"resources/ts/app.tsx",
"resources/sass/front/app.scss",
// [laravel-files]
],
refresh: true,
ssr: "resources/ts/ssr.tsx",
}),
react(),
debugMode &&
stylelint({
dev: false,
build: true,
cache: true,
include: ["**/resources/sass/**/*.{css,scss}"],
exclude: ["node_modules/**", "vendor/**", "packages/**"],
lintOnStart: false,
emitError: true,
emitWarning: true,
emitErrorAsWarning: false,
emitWarningAsError: true,
}),
debugMode &&
eslint({
cache: true,
include: ["resources/ts/**/*.{ts,tsx}"],
exclude: [
"node_modules/**",
"**/node_modules/**",
"vendor/**",
"**/vendor/**",
"packages/**",
"resources/ts/components/**/*.{ts,tsx}",
],
lintOnStart: false,
emitWarning: true,
emitError: true,
failOnWarning: false,
failOnError: true,
}),
copy({
targets: [
{
src: path.normalize("resources/favicons/front/*"),
dest: path.normalize("public/"),
},
// [copy-files]
],
copyOnce: true,
verbose: true,
}),
tailwindcss(),
],
resolve: {
alias: [
{
find: "&",
replacement: "/resources/assets",
},
{
find: "@",
replacement: "/resources/ts",
},
],
},
});