73 lines
1.9 KiB
TypeScript
73 lines
1.9 KiB
TypeScript
import { defineConfig } from "vite"
|
|
import injectHTML from "vite-plugin-html-inject"
|
|
import { resolve } from "node:path"
|
|
import fs from "node:fs"
|
|
import tailwindcss from "@tailwindcss/vite"
|
|
import { fileURLToPath } from "node:url"
|
|
|
|
const __dirname = fileURLToPath(new URL(".", import.meta.url))
|
|
|
|
const getHtmlFiles = (dir: string): string[] => {
|
|
let results: string[] = []
|
|
const list = fs.readdirSync(dir)
|
|
list.forEach((file) => {
|
|
file = resolve(dir, file)
|
|
const stat = fs.statSync(file)
|
|
if (stat && stat.isDirectory()) {
|
|
if (file.endsWith("/partials")) {
|
|
return
|
|
}
|
|
results = results.concat(getHtmlFiles(file))
|
|
} else if (file.endsWith(".html")) {
|
|
results.push(file)
|
|
}
|
|
})
|
|
return results
|
|
}
|
|
|
|
// Normalize the paths to ensure consistent forward slashes
|
|
const normalizePath = (path: string): string => path.split(resolve(__dirname, "src")).join("").replace(/\\/g, "/")
|
|
|
|
// Use normalizePath function to process the paths correctly
|
|
const htmlFiles = getHtmlFiles("src")
|
|
const input = Object.fromEntries(
|
|
htmlFiles.map((file) => [normalizePath(file).replace(".html", "").replace(/^\//, ""), file])
|
|
)
|
|
|
|
const removecors = () => {
|
|
return {
|
|
name: "remove-cors",
|
|
transformIndexHtml: {
|
|
order: "post" as const,
|
|
handler(html: string) {
|
|
return html.replace(/crossorigin\s*/g, "")
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
export default defineConfig({
|
|
base: "",
|
|
server: {
|
|
open: "/",
|
|
},
|
|
publicDir: "../public",
|
|
plugins: [injectHTML(), removecors(), tailwindcss()],
|
|
root: "src",
|
|
optimizeDeps: {
|
|
include: ["filepond", "filepond-plugin-image-preview"],
|
|
},
|
|
build: {
|
|
outDir: "../html",
|
|
emptyOutDir: true,
|
|
rollupOptions: {
|
|
input,
|
|
output: {
|
|
entryFileNames: `assets/script/[name].js`,
|
|
chunkFileNames: `assets/script/[name].js`,
|
|
assetFileNames: `assets/script/[name].[ext]`,
|
|
},
|
|
},
|
|
},
|
|
})
|