Atoms代码生成后修改枚举值怎么保留二次改动
需绕过默认覆盖逻辑:有// @generated标记的枚举不可直接编辑;方法一移至src/enums/custom/手动维护;方法二用declare module扩展;方法三修改模板加自定义插槽。

在使用 Atoms(如基于 TypeScript + React 的原子化组件库或代码生成工具)生成代码后,若需修改自动生成的枚举类型并确保后续重新生成不覆盖人工改动,必须绕过默认覆盖逻辑,建立可持久化的修改路径。
确认枚举是否属于“生成即覆盖”范围
进入生成产物目录,找到enums/或types/generated/下对应的文件,查看文件顶部是否存在类似// @generated by atoms-cli v2.4.0的标记。若有该标记,即表示此为受控生成文件,
【直接编辑后,下次生成时将被完全清除】
若无此标记,说明该枚举是手动维护的,可自由修改。
方法一:将枚举移出生成目录,转为手动维护
① 在项目中新建 src/enums/custom/ 目录;
② 将原生成文件中的枚举定义全量复制到 src/enums/custom/StatusEnum.ts;
③ 更改所有引用路径:将 import { StatusEnum } from '@/types/generated/enum' 更改为 import { StatusEnum } from '@/enums/custom/StatusEnum';
这一步最关键:Atoms 工具默认只扫描配置指定的输入源(如 OpenAPI schema),不会触碰 src/ 下的手写文件,因此后续任何生成操作都不会影响它。
方法二:用扩展枚举(declare module)注入新成员
适用于仅需追加值、不改动原始结构的场景。
在 src/enums/extend/StatusEnum.extend.ts 中写:
declare module '@/types/generated/enum' {
export enum StatusEnum {
ARCHIVED = 'archived',
}
}
注意:TypeScript 会合并同名命名空间和枚举,但要求原始枚举本身是 export enum StatusEnum { ... } 且未被 const enum 修饰,否则扩展无效。
方法三:修改生成模板,预留自定义插槽
进入 Atoms 配置目录(通常是 .atomsrc.json 或 atoms.config.ts);
查找 templates 或 enumTemplate 字段,将默认模板替换为支持 {{custom_append}} 占位符的自定义版本;
在项目根目录下新建 atoms-enum-hooks/StatusEnum.append.ts,内容只写新增成员:EXPORTED = 'exported',;
生成时,Atoms 会读取该文件内容插入到枚举末尾,且不触碰已有行。
-
下载
-
- 关于柯南的沙雕网名有哪些
- 角色扮演 | 1
- 网名
-
- 最新中性名字男女通用网名有哪些
- 角色扮演 | 1
- 网名
-
- 关于蓝色说唱的网名有哪些
- 角色扮演 | 1
- 网名
-
- 我好喜欢你是什么梗?
- 角色扮演 |