---
title: API
createTime: 2022/05/14 10:43:53
author: pengzhanbo
permalink: /note/vuepress-plugin/netlify-functions/api/
---

## netlifyFunctionsPlugin(options)

在 vuepress 项目中使用， 或者 开发vuepress-theme时使用，提供 netlify-functions 开发时服务。

该插件应该优先于其他有依赖该插件的其他插件之前调用。

``` js
netlifyFunctionsPlugin({
  sourceDirectory: '',
  destDirectory: '',
  proxyPrefix: '',
})
```

### options

__类型：__ `{ sourceDirectory: string, destDirectory: string, proxyPrefix: string }`

- `options.sourceDirectory`:
  
  `functions` 开发时所在目录， 默认值： `app.dir.source('.vuepress/functions')`,
  即，如果你的vuepress项目源码目录是 `src`， 那么 `sourceDirectory` 默认为 `src/.vuepress/functions/`

- `options.destDirectory`:
  
  `functions` 构建后输出目录，默认值： `app.dir.dest('functions')`,
  即，如果你的 vuepress项目配置的 `dest` 输出目录为 `docs`， 那么默认输出目录为 `docs/functions`,
  一般来说，这个配置不需要手动修改。

- `options.proxyPrefix`:
  
  在开发环境中， `Netlify Functions` 服务的默认路径是 `/.netlify/functions/*`, 但这并不能保持开发环境和
  生产部署环境一致，所以需要将路径重写。

  默认值： `/api` 

  即 `^/api/*` 的请求会被转发到 `/.netlify/functions/*` ，
  如, `functions/my_function.ts` ，则请求 `/api/my_function` 将会转发到 `/.netlify/functions/my_function`。



## useNetlifyFunctionsPlugin(app, options)

在开发 vuepress plugin 时使用，为插件提供 `netlify functiosn` 支持

``` ts
import { useNetlifyFunctionsPlugin } from '@vuepress-plume/vuepress-plugin-netlify-functions'

const myPlugin = (): Plugin => {
  return (app: App) => {
    const {
      // 请求前缀,  默认 /api
      proxyPrefix,
      preparePluginFunctions,
      generatePluginFunctions
    } = useNetlifyFunctionsPlugin(app, {
       // 指定插件的functions目录，相关脚本在此目录中开发
      directory: path.resolve(__dirname, 'functions')
    })
    return {
      name: 'vuepress-plugin-myPlugin',
      onPrepared:() => preparePluginFunctions(),
      onGenerated: () => generatePluginFunctions(),
    }
  }
}
```

### options

__类型：__ `{ directory: string }`

- `options.directory` 
  
  插件中的 functions 开发目录。

  一般来说，它的值都设置为 `path.resolve(__dirname, 'functions')`
  
