配置文件
基本配置
在项目根目录创建 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']
}
]
})