internal/ 下的 tsconfig / config / uno-config 三个工程化配置包
internal/ 目录存放面向仓库内部的工程化配置包。它们被多个 workspace 共享,避免 tsconfig / oxlint / vitest / uno 配置在每个包里重复维护:
internal/
├── tsconfig/ # @skyroc/tsconfig 7 个共享 TS 编译预设
├── config/ # @skyroc/config 4 个 Oxlint 预设 + Vitest 共享配置
└── uno-config/ # @skyroc/uno-config UnoCSS presetSoybeanAdmin| 包 | 引用方式 |
|---|---|
@skyroc/tsconfig | "extends": "@skyroc/tsconfig/web-app.json" |
@skyroc/config(Oxlint) | "extends": ["../../internal/config/oxlint/react.json"](相对路径) |
@skyroc/config(Vitest) | import { baseTestConfig } from '@skyroc/config/vitest' |
@skyroc/uno-config | import { presetSoybeanAdmin } from '@skyroc/uno-config' |
Oxlint 预设走相对路径而不是包名子路径——.oxlintrc.json 的 extends 由 oxlint 自己解析,不经过 Node 的 exports 字段,详见 @skyroc/config。
| 目录 | 包名 | 内容 | private | 构建 |
|---|---|---|---|---|
tsconfig | @skyroc/tsconfig | 7 个 *.json TS 预设 | ✅ | 无(纯 JSON) |
config | @skyroc/config | 4 个 Oxlint JSON 预设 + Vitest TS 预设 | ✅ | tsdown → dist/(仅 vitest 部分) |
uno-config | @skyroc/uno-config | UnoCSS presetSoybeanAdmin() | ❌ | 源码直出 src/,publishConfig 才指向 dist/ |
三者里只有 @skyroc/uno-config 没有声明 private: true,带 publishConfig,是可发布到 npm 的;另外两个只在 workspace 内通过 workspace:* 消费。
| 收益 | 说明 |
|---|---|
| 单点维护 | 调 TS 严格度、换 vitest 默认环境、加一条 lint 规则,只改一处 |
| 新建包零样板 | 新包只需 extends 预设即可拿到完整配置 |
| 跨平台预设 | tsconfig 提供 base / library / node / web / web-app / RN / RN-app 七种基线 |
| 强约束 | 通过预设强制全仓库行为一致(如 verbatimModuleSyntax、禁用 useCallback) |
代价是升级影响面大:改预设会同时影响所有 extends 它的包,引入新规则要一次性修完所有违规。
本目录描述包本身——提供哪些预设、导出哪些常量、如何被消费;规则细节与规范说明放在 guide/engineering:
| 主题 | 对应文档 |
|---|---|
| Oxlint 规则细节与格式化 | Lint 与格式化 |
| Vitest 用法与测试组织 | 测试 |
| TypeScript 策略 | TypeScript 配置 |
| 新包该 extends 哪个预设 | 新建包流程 |
| UnoCSS / Tailwind 选型 | @skyroc/tailwind-plugin |
uno-config 与其他内部包统一使用 @skyroc/* scope,见 命名规范。
7 个 TS 编译预设(base / library / node / web / web-app / RN / RN-app)
4 个 Oxlint 预设 + Vitest 共享常量与配置对象
UnoCSS presetSoybeanAdmin:调色板、shortcuts、动画、design token
Last updated on