import { PackageInfo } from "../utils/npm"; import { SdinAbstractConfig } from './abstract-config'; /** * Sdin 项目配置参数 */ export interface SdinAbstractProjectParams { /** 项目根目录(默认:当前工作目录) */ root?: string; /** 模块别名(默认:不设置,相对项目根目录而言) */ alias?: Record; /** 代码宏定义(key 是原代码,value 是替换后的代码) */ codes?: Record; /** 数据宏定义(key 是原代码,value 是替换后的数据。在网页应用里,它会被挂载到全局变量 datas 上) */ datas?: Record; } /** * Sdin 配置 */ export declare abstract class SdinAbstractProject | null, TParams extends SdinAbstractProjectParams, TDatas extends Record> extends SdinAbstractConfig { /** 项目根目录 */ readonly root: string; /** 项目临时目录 */ readonly tmp: string; /** 项目公共目录 */ readonly pro: string; /** 项目配置目录 */ readonly cfg: string; /** 项目包信息 */ readonly pkg: PackageInfo; /** 模块别名 */ readonly alias: Record; /** 代码宏定义 */ readonly codes: Record; /** 数据宏定义 */ abstract datas: TDatas; constructor(ancestor: TAncestor, parent: TParent, params: TParams); /** * 获取项目根目录下的绝对路径 */ withRoot(...pathSegments: string[]): string; /** * 获得项目临时目录下的绝对路径 */ withTmp(...pathSegments: string[]): string; /** * 获得项目公共目录下的绝对路径 */ withPro(...pathSegments: string[]): string; /** * 获得项目配置目录下的绝对路径 */ withCfg(...pathSegments: string[]): string; /** * 将用户定义的代码和数据宏定义,转成可用于编译的宏定义 */ toMacros(): { [x: string]: string; }; /** * 将 alias 转换成 tsconfig paths */ toTsCfgPaths(): Record; }