Skip to content

配置选项

NServe 的配置文件 nserve.config.ts 是使用 TypeScript 编写的,提供了丰富的配置选项来定制开发、构建和代码生成过程。

完整配置示例

typescript
import { DefineNserveConfig } from '@aicblock/nserve'

export default DefineNserveConfig({
  entry: 'app.ts',
  outputDir: 'dist',
  sourceDir: 'src',
  testing: false,
  yamlConfig: {},
  plugins: [],
  external: [],
  generateConfig: {
    genDir: 'nserve-config',
    routerDir: 'router',
    modelDir: 'model',
    codePrettier: {
      semi: false,
      singleQuote: true,
      trailingComma: 'none'
    },
    middleware: {}
  }
})

基本配置

entry

  • 类型: string
  • 默认值: 'app.ts'
  • 说明: 应用程序的入口文件路径。

outputDir

  • 类型: string
  • 默认值: 'dist'
  • 说明: 构建输出目录。

sourceDir

  • 类型: string
  • 默认值: 'src'
  • 说明: 源代码目录。

testing

  • 类型: boolean
  • 默认值: false
  • 说明: 是否为测试模式。在测试模式下,NServe 可能会跳过某些优化或执行额外的测试相关逻辑。

yamlConfig

  • 类型: Record<string, any>
  • 默认值: {}
  • 说明: YAML 配置文件内容。用于支持从 YAML 文件加载配置。

plugins

  • 类型: esbuild.Plugin[]
  • 默认值: []
  • 说明: 自定义 esbuild 插件数组。可以用于扩展 NServe 的构建功能。

external

  • 类型: string[]
  • 默认值: []
  • 说明: 构建时应排除的外部依赖数组。这些依赖不会被打包到输出文件中。

生成配置

generateConfig.genDir

  • 类型: string
  • 默认值: 'nserve-config'
  • 说明: 生成配置目录,用于存放路由配置和模型 SQL 文件。

generateConfig.routerDir

  • 类型: string
  • 默认值: 'router'
  • 说明: 路由配置目录,位于 genDir 内部。

generateConfig.modelDir

  • 类型: string
  • 默认值: 'model'
  • 说明: 模型 SQL 文件目录,位于 genDir 内部。

generateConfig.codePrettier

  • 类型: Record<string, any>
  • 默认值: { semi: false, singleQuote: true, trailingComma: 'none' }
  • 说明: 代码格式化配置,使用 Prettier 的配置选项。

generateConfig.middleware

  • 类型: Record<string, { libName: string; funcName: string }>
  • 默认值: {}
  • 说明: 全局中间件配置,用于定义可在路由配置中使用的中间件。

配置文件加载顺序

NServe 会按照以下顺序加载配置文件:

  1. 当前目录下的 nserve.config.ts
  2. 通过 --config 选项指定的配置文件

环境变量覆盖

NServe 支持通过环境变量覆盖配置文件中的选项。环境变量的命名规则是:将配置键转换为大写,使用下划线分隔层级,并添加 AICBLOCK_NSERVE_ 前缀。

例如:

  • entryAICBLOCK_NSERVE_ENTRY
  • outputDirAICBLOCK_NSERVE_OUTPUT_DIR
  • generateConfig.genDirAICBLOCK_NSERVE_GENERATECONFIG_GENDIR

TypeScript 类型支持

NServe 提供了完整的 TypeScript 类型定义,可以通过以下方式导入:

typescript
import type { Config, DefineGenRouterConfig } from '@aicblock/nserve'