33 lines
1.2 KiB
JavaScript
Executable File
33 lines
1.2 KiB
JavaScript
Executable File
// src/index.ts
|
|
import { relative, resolve } from "path";
|
|
import colors from "picocolors";
|
|
import picomatch from "picomatch";
|
|
import { normalizePath } from "vite";
|
|
function normalizePaths(root, path) {
|
|
return (Array.isArray(path) ? path : [path]).map((path2) => resolve(root, path2)).map(normalizePath);
|
|
}
|
|
var src_default = (paths, config = {}) => ({
|
|
name: "vite-plugin-full-reload",
|
|
apply: "serve",
|
|
config: () => ({ server: { watch: { disableGlobbing: false } } }),
|
|
configureServer({ watcher, ws, config: { logger } }) {
|
|
const { root = process.cwd(), log = true, always = true, delay = 0 } = config;
|
|
const files = normalizePaths(root, paths);
|
|
const shouldReload = picomatch(files);
|
|
const checkReload = (path) => {
|
|
if (shouldReload(path)) {
|
|
setTimeout(() => ws.send({ type: "full-reload", path: always ? "*" : path }), delay);
|
|
if (log)
|
|
logger.info(`${colors.green("page reload")} ${colors.dim(relative(root, path))}`, { clear: true, timestamp: true });
|
|
}
|
|
};
|
|
watcher.add(files);
|
|
watcher.on("add", checkReload);
|
|
watcher.on("change", checkReload);
|
|
}
|
|
});
|
|
export {
|
|
src_default as default,
|
|
normalizePaths
|
|
};
|