Skip to content

配置文件

基本配置

在项目根目录创建 nserve.config.ts 文件:

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

export default DefineNserveConfig({
  entry: 'app.ts', // 应用入口文件
  outputDir: 'dist', // 构建输出目录
  sourceDir: 'src', // 源代码目录
  testing: false, // 是否为测试模式
  yamlConfig: {}, // YAML 配置文件内容
  plugins: [], // 自定义插件
  external: [], // 外部依赖
  generateConfig: {
    genDir: 'nserve-config', // 生成配置目录
    routerDir: 'router', // 路由配置目录
    modelDir: 'model', // 模型配置目录
    codePrettier: {
      semi: false, // 是否使用分号
      singleQuote: true, // 是否使用单引号
      trailingComma: 'none' // 尾随逗号配置
    },
    middleware: {} // 中间件配置
  }
})

路由配置

nserve-config/router 目录下创建路由配置文件,例如 user.ts

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

export default DefineGenRouter({
  servicePath: '/api/user', // 路由前缀
  serviceHandler: 'user', // 处理逻辑目录
  routers: [
    {
      path: '/list', // 路由路径
      method: 'GET', // HTTP 方法
      name: 'list', // 处理函数名
      middleware: [] // 路由级中间件
    },
    {
      path: '/create',
      method: 'POST',
      name: 'create',
      session: {
        /* session 配置 */
      }
    }
  ],
  middleware: ['auth'] // 全局中间件
})

模型配置

nserve-config/model 目录下创建 SQL 文件,例如 user.sql

sql
CREATE TABLE `user` (
  `id` INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
  `username` VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
  `password` VARCHAR(255) NOT NULL COMMENT '密码',
  `email` VARCHAR(100) NOT NULL UNIQUE COMMENT '邮箱',
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

环境变量

NServe 支持 .env 文件和环境特定的配置文件(如 .env.development.env.production)。

示例 .env 文件:

# yamlConfig 配置
YAML_CONFIG.APP_CONFIG.PORT=3000
YAML_CONFIG.MYSQL_CONF.host=localhost
YAML_CONFIG.MYSQL_CONF.port=3306
YAML_CONFIG.MYSQL_CONF.user=root
YAML_CONFIG.MYSQL_CONF.password=password
YAML_CONFIG.MYSQL_CONF.database=test

# NServe 配置
AICBLOCK_NSERVE_APP_ENTRY=app.ts

中间件配置

nserve.config.ts 中配置全局中间件:

typescript
export default DefineNserveConfig({
  generateConfig: {
    middleware: {
      auth: {
        libName: '@/middleware/auth',
        funcName: 'authMiddleware'
      }
    }
  }
})

在路由配置中使用中间件:

typescript
export default DefineGenRouter({
  routers: [
    {
      path: '/protected',
      method: 'GET',
      name: 'protected',
      middleware: ['auth']
    }
  ]
})