vuepress-plugin-netlify-functions
Version:
The Plugin for VuePress 2, Support Netlify Functions
64 lines (63 loc) • 1.87 kB
JavaScript
import { path } from 'vuepress/utils';
import * as chokidar from 'chokidar';
import esbuild from 'esbuild';
import { readFileList } from '../utils/index.js';
export async function generateFunctions(app, options) {
const { directory } = options;
const { source, dest } = directory;
const userSource = source[0];
const files = readFileList(userSource);
if (files.length > 0) {
await esbuild.build({
entryPoints: files,
outbase: userSource,
outdir: dest,
platform: 'node',
format: 'cjs',
});
}
}
export async function initialFunctions(app, options) {
if (!app.env.isDev)
return;
const { directory } = options;
const { source, temp } = directory;
const userSource = source[0];
const files = readFileList(userSource);
if (files.length > 0) {
await esbuild.build({
entryPoints: files,
outbase: userSource,
outdir: temp,
platform: 'node',
format: 'cjs',
});
}
watchFunctions(app, options);
}
export function watchFunctions(app, { directory }) {
const { source, temp } = directory;
const userSource = source[0];
const watcher = chokidar.watch('**/*.ts', {
cwd: userSource,
ignoreInitial: true,
});
watcher.on('add', async (file) => {
await esbuild.build({
entryPoints: [path.join(userSource, file)],
outbase: userSource,
outdir: temp,
platform: 'node',
format: 'cjs',
});
});
watcher.on('change', async (file) => {
await esbuild.build({
entryPoints: [path.join(userSource, file)],
outbase: userSource,
outdir: temp,
platform: 'node',
format: 'cjs',
});
});
}