test/node_modules/@vuepress/plugin-palette/lib/node/palettePlugin.js
2024-08-13 09:27:52 +08:00

66 lines
2.3 KiB
JavaScript

import chokidar from 'chokidar';
import { preparePaletteFile } from './preparePaletteFile.js';
import { prepareStyleFile } from './prepareStyleFile.js';
import { presetOptions } from './presetOptions.js';
export const palettePlugin = ({ preset = 'css', userPaletteFile = presetOptions[preset].userPaletteFile, tempPaletteFile = presetOptions[preset].tempPaletteFile, userStyleFile = presetOptions[preset].userStyleFile, tempStyleFile = presetOptions[preset].tempStyleFile, importCode = presetOptions[preset].importCode, } = {}) => ({
name: '@vuepress/plugin-palette',
alias: (app) => ({
'@vuepress/plugin-palette/palette': app.dir.temp(tempPaletteFile),
'@vuepress/plugin-palette/style': app.dir.temp(tempStyleFile),
}),
onPrepared: async (app) => {
await Promise.all([
preparePaletteFile(app, {
userPaletteFile,
tempPaletteFile,
importCode,
}),
prepareStyleFile(app, {
userStyleFile,
tempStyleFile,
importCode,
}),
]);
},
onWatched: (app, watchers) => {
const paletteWatcher = chokidar.watch(userPaletteFile, {
cwd: app.dir.source(),
ignoreInitial: true,
});
paletteWatcher.on('add', () => {
preparePaletteFile(app, {
userPaletteFile,
tempPaletteFile,
importCode,
});
});
paletteWatcher.on('unlink', () => {
preparePaletteFile(app, {
userPaletteFile,
tempPaletteFile,
importCode,
});
});
watchers.push(paletteWatcher);
const styleWatcher = chokidar.watch(userStyleFile, {
cwd: app.dir.source(),
ignoreInitial: true,
});
styleWatcher.on('add', () => {
prepareStyleFile(app, {
userStyleFile,
tempStyleFile,
importCode,
});
});
styleWatcher.on('unlink', () => {
prepareStyleFile(app, {
userStyleFile,
tempStyleFile,
importCode,
});
});
watchers.push(styleWatcher);
},
});