66 lines
2.3 KiB
JavaScript
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);
|
|
},
|
|
});
|