UNPKG

vuepress-plugin-netlify-functions

Version:

The Plugin for VuePress 2, Support Netlify Functions

54 lines (53 loc) 1.76 kB
import { extendsBundlerOptions } from './extendsBundlerOptions.js'; import { generateFunctions, generateNetlifyConfig, initialFunctions, netlifyServe, } from './netlify/index.js'; function initOptions(app, { sourceDirectory, destDirectory, proxyPrefix = '/api', }) { return { directory: { source: [sourceDirectory || app.dir.source('.vuepress/functions')], dest: destDirectory || app.dir.dest('functions'), temp: app.dir.temp('functions'), }, proxyPrefix, }; } const cache = { options: {}, }; export function getOptions() { return cache.options; } /** * * netlify function 插件,提供 netlify functions 支持 * * @param options */ export function netlifyFunctionsPlugin(options = {}) { return (app) => { const opts = initOptions(app, options); let server; cache.options = opts; return { name: 'vuepress-plugin-netlify-functions', onInitialized: async (app) => { // 启动netlify functions server if (!app.env.isBuild) { // 初始化用户侧的 functions await initialFunctions(app, opts); server = await netlifyServe(opts); } }, onWatched: (app, watchers) => { watchers.push(server); }, extendsBundlerOptions: (bundlerOption, app) => { extendsBundlerOptions(bundlerOption, app, opts, server.host); }, onGenerated: async (app) => { // 生成配置文件 generateNetlifyConfig(app, opts); await generateFunctions(app, opts); }, }; }; }