@scml/types
SugarCube 2 Mod Loader 生态的统一 TypeScript 类型定义包。本包不单独拉取上游源码,而是聚合 monorepo 内各子包生成的 .d.ts,并对外提供单一入口与子路径导出。
功能
- 聚合类型:从各子包(如
sugarcube-2-ModLoader、各类 Addon/Mod/Hook)的type-dist/拷贝到本包的type-dist/<包名>/ - 全局类型:根据各包的
global-data.js生成统一的global.d.ts,扩展Window等全局接口 - 子路径导出:在
package.json的exports中为每个子包的模块提供独立导出路径,便于按需引用 - 类型别名替换:构建时通过
@scml/utils的typeAliasReverce对type-dist内声明文件做统一替换
安装
使用
主入口(全局类型)
引入主入口即可获得扩展后的全局类型(如 Window 上的挂载):
子路径导出(按模块引用)
需要具体模块类型时,使用对应子路径:
package.json 的 exports 中列出了所有可用的子路径,格式为:
@scml/types/sugarcube-2-ModLoader/<模块名>@scml/types/Addon_ConflictChecker/<模块名>@scml/types/Addon_ImageLoaderHook2BeautySelector/<模块名>- … 以及其余 Addon / Mod / Hook 包下的模块
构建
本包依赖同 monorepo 下其他包先完成构建(生成各自的 type-dist/)。通常在仓库根目录执行:
本包构建流程(pnpm run build → tsx src/build.ts):
- 清空并创建
type-dist/ - generateGlobal:从各子包拷贝
type-dist,读取各包global-data.js,生成type-dist/global.d.ts - runReplace:对
type-dist/**/*.d.ts执行类型别名反向替换 - generateExports:根据
constant.ts中的allTypes与各子包package.json的exports生成本包package.json的exports
脚本
参与聚合的子包
src/constant.ts 中的 allTypes 决定了参与聚合的包,当前包括:
- sugarcube-2-ModLoader(Mod Loader 核心)
- Addon_*:ConflictChecker、ImageLoaderHook2BeautySelector、ModdedClothes、ModdedFeats、ModdedHair、ModuleCssReplacer、TweeReplacerLinker
- AddonMod_*:BeautySelector、I18nScriptList、I18nTweeList、TweePrefixPostfix
- AddonModTimeWrapper
- GameOriginalImagePackMod
- Hook_*:ImgLoader、MacroRng
- Mod_*:CheckDoLCompressorDictionaries、CheckGameVersion、CoTCheckGameVersion、Diff3WayMerge、i18n、I18nTweeReplacer、LoaderGui、ReplacePatch、SubUiAngularJs、SweetAlert2、TweeReplacer
新增或移除聚合包时,需修改 constant.ts 的 allTypes 并重新执行 pnpm run build。
发布与文件
- 发布到 npm 的文件:
files仅包含type-dist与README.md - 类型入口:
types指向./type-dist/global.d.ts
