defineOiyoConfig
声明 Oiyo 工程级约定与扫描目录
defineOiyoConfig() 用于声明 Oiyo 的工程级约定,常见场景包括配置“主包/分包”的页面目录,以及调整自动扫描的来源范围。
使用位置
- 文件名:
oiyo.config.{ts,js,mjs} - 目录:项目根目录(与
package.json同级) - 导出:默认导出
oiyo.config.ts
import { defineOiyoConfig } from '@skiyee/oiyo/config'
export default defineOiyoConfig({
// ...
})
签名
defineOiyoConfig(config: OiyoConfig): OiyoConfig
该函数的主要作用是提供稳定的配置结构与类型提示。
字段
rootDir
项目根目录(index.html 文件所在的位置)。
- 类型:
string - 默认值:
process.cwd()
srcDir
源码目录。将相对于 rootDir。
- 类型:
string - 默认值:
<rootDir>/src
dir
目录约定。
若设置绝对路径,则相对于 srcDir。
mainPackage
主包页面根目录。
- 类型:
string - 默认值:
<srcDir>/pages
subPackages
分包页面根目录列表。
- 类型:
string[] - 默认值:
<srcDir>/packages/第一层所有目录
layouts
布局目录。
- 类型:
string - 默认值:
<srcDir>/layouts
scan
自动扫描源。
apis
API 自动扫描源。
- 类型:
string[] | ApiTarget[] - 默认值:
['composables/*.ts', '@skiyee/oiyo/runtime']
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
from | string | - | 扫描来源。可用于目录、文件、包名或包子路径。 |
types | boolean | false | 是否同时处理类型导出。 |
ignore | string | string[] | - | 忽略这些文件。适合排除测试文件或临时目录。 |
only | string[] | OnlyPickNameItem[] | - | 只保留这些导出,并可按需重命名。 |
exclude | string[] | - | 排除这些最终暴露名。 |
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
name | string | - | 来源侧名。 |
as | string | - | 暴露到项目中的名。 |
isType | boolean | false | 是否仅作为类型导入/导出。 |
components
Component 自动扫描源。
- 类型:
string[] | ComponentTarget[] - 默认值:
['components/**/*.vue']
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
from | string | - | 扫描来源。可用于目录、文件、包名或包子路径。 |
ignore | string | string[] | - | 忽略这些文件。 |
only | string[] | OnlyPickNameItem[] | - | 只保留这些组件导出,并可按需重命名。 |
prefix | string | - | 为最终组件名添加统一前缀。 |
chain | boolean | - | 是否让目录链参与组件命名。 |
exclude
路由的排除规则。支持 glob 语法
若设置绝对路径,则相对于 srcDir。
- 类型:
string[] - 默认值:
-
ide
不同小程序平台 IDE 的功能。
open
构建小程序平台时自动打开对应 IDE。
- 类型:
boolean - 默认值:
false
path
不同平台 IDE 的可执行路径映射。
- 类型:
Partial<Record<MpPlatform, string>> - 默认值:
-
属于实验性功能,如若有问题可直接反馈。
基础示例
oiyo.config.ts
import { defineOiyoConfig } from '@skiyee/oiyo/config'
export default defineOiyoConfig({
dir: {
mainPackage: 'pages',
subPackages: ['sub-direct', 'sub-nested/order'],
},
scan: {
apis: ['composables'],
components: ['components'],
},
})
约束
dir.subPackages声明的是“会参与分包页面扫描/注册”的目录,不是随意的文件夹清单- 路径建议使用
/作为分隔符,以保证跨平台一致性 scan适合用来收敛团队约定,文档中只建议声明业务侧需要感知的扫描来源