同一模板,生成不同版本
基础版和团队版共用同一套代码,区别在于是否包含统计模块。分别维护模板时,公共代码的修改需要同步到两份源码。
示例保留一份完整源码,通过两份 Preset 生成不同版本:basic.json 排除统计文件并删除入口中的相关代码,team.json 保留统计功能。
示例说明
下方只演示文件变化,不会运行命令。试用前,先替换示例仓库地址,再把 JSON 保存到命令指定的路径。
starter/src/main.ts
import { track } from './analytics'
track('app-started')
console.log('Hello')
创建命令
Bash
pnpm create preset init my-basic-app --from ./presets/basic.json模板差异配置
两份配置都从 starter 目录取文件。基础版多做两步:
- 用
exclude排除src/analytics.ts。 - 用
replace删除src/main.ts中的导入和调用,避免入口继续引用已删除的文件。
团队版保留这两个文件。两个版本的 package.json 都会按目标目录更新 name,分别变成 my-basic-app 和 my-team-app。
公共代码在源仓库中维护,创建项目时应用对应配置。已经生成的项目需要自行更新。
文本替换规则
replace 按原文精确匹配。入口代码修改后,需要同步检查配置中的 from;找不到对应文本时,创建会报错。
这类配置适合少量、明确的文件差异。删除文件后,相关引用也需要通过配置移除。CLI 不会自动分析引用关系或转换 TypeScript。
更多操作见Preset 配置。