UNPKG

vuepress-plugin-netlify-functions

Version:

The Plugin for VuePress 2, Support Netlify Functions

64 lines (63 loc) 1.87 kB
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', }); }); }