106 lines
2.5 KiB
TypeScript
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",
|
|
},
|
|
],
|
|
},
|
|
|
|
});
|