| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import { defineConfig } from 'vite'
- import react from '@vitejs/plugin-react'
- import fs from "fs";
- import path from "path";
- import chokidar from "chokidar";
- import tailwindcss from '@tailwindcss/vite';
- // https://vite.dev/config/
- function generateIndex(postsDir, outputFile) {
- const files = fs.readdirSync(postsDir)
- .filter(f => f.endsWith(".md"));
- fs.writeFileSync(outputFile, JSON.stringify(files, null, 2));
- console.log(`Complete: index.json updated (${files.length} posts)`);
- }
- function generateIndexPlugin() {
- const postsDir = path.resolve("public/posts");
- const outputFile = path.resolve("public/posts/index.json");
- return {
- name: "generate-index-json",
- buildStart() {
- generateIndex(postsDir, outputFile);
- },
- configureServer(server) {
- const watcher = chokidar.watch(postsDir, { ignoreInitial: true });
- const update = () => {
- generateIndex(postsDir, outputFile);
- server.ws.send({
- type: "full-reload",
- path: "/posts/index.json"
- });
- };
- watcher.on("add", update);
- watcher.on("unlink", update);
- watcher.on("change", update);
- server.httpServer.on("close", () => watcher.close());
- }
- };
- }
- export default defineConfig({
- plugins: [react(),generateIndexPlugin(),tailwindcss()],
- })
|