首页 > 教程攻略 > ai资讯 >Atoms代码生成后修改枚举值怎么保留二次改动

Atoms代码生成后修改枚举值怎么保留二次改动

来源:互联网 时间:2026-08-22 13:25:10

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

Atoms代码生成后修改枚举值怎么保留二次改动

在使用 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.jsonatoms.config.ts);

查找 templatesenumTemplate 字段,将默认模板替换为支持 {{custom_append}} 占位符的自定义版本;

在项目根目录下新建 atoms-enum-hooks/StatusEnum.append.ts,内容只写新增成员:EXPORTED = 'exported',

生成时,Atoms 会读取该文件内容插入到枚举末尾,且不触碰已有行。