# @abapify/adt-plugin-abapgit 中文文档

规范地址：https://npmcn.com/package/%40abapify/adt-plugin-abapgit/

版本：0\.4\.34
npm 元数据更新时间：2026-11-02T23:20:01.179Z
中文译文更新时间：2026-11-06T13:35:33.356Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40abapify/adt-plugin-abapgit
原文对照：https://npmcn.com/package/%40abapify/adt-plugin-abapgit/?lang=original
项目主页：https://github.com/abapify/adt-cli/tree/main/packages/adt-plugin-abapgit#readme
源码仓库：https://github.com/abapify/adt-cli

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：2 MB，263 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：6 个
- 首次发布：2026-04-20T21:11:46.173Z
- 最新版本发布：2026-11-02T23:20:00.863Z
- 近 30 天下载量：3113（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：30（近 12 个月 30 个）

## 中文简介

abapGit 串行化插件,用于 adt- cli —— 回合式 ADT 对象到/ 从 abapGit 在磁盘上的格式

## 安装

```sh
npm install @abapify/adt-plugin-abapgit
```

也可以使用：`pnpm add @abapify/adt-plugin-abapgit`、`yarn add @abapify/adt-plugin-abapgit`、`bun add @abapify/adt-plugin-abapgit`

## README

# @abapify/adt-plugin-abapgit (英语)

[![version](https://img.shields.io/github/package-json/v/abapify/adt-cli?filename=packages/adt-plugin-abapgit/package.json)](https://github.com/abapify/adt-cli/pkgs/npm/%40abapify%2Fadt-plugin-abapgit)

abapGit格式插件用于ADT——将ABAP对象序列化到Git兼容的XML/ABAP文件.

## 纯物质化

登记人数 `abapgitFormatPlugin` 可以生成一个想要的对象树,而不包含 文件系统、 ADT 或 Git 副作用。 明确源组件覆盖 可变的 ADK 源获取器, 而现有的 XSD 后置处理器则继续 生成元数据 :

```typescript
const { files } = await abapgitFormatPlugin.materialize({
  object: adkClass,
  objectType: 'CLAS',
  packagePath: ['ZROOT', 'ZROOT_FEATURE'],
  sources: {
    main: selectedMainSource,
    definitions: selectedLocalDefinitions,
  },
  formatOptions: { folderLogic: 'prefix' },
});
```

路径根植于下面 `src/`并附有说明 他们的语义作用和源组件身份。 现有文件系统导入 而Git-to-SAP出口API则保持不变.

## 结构概览

```
┌─────────────────────────────────────────────────────────────────────┐
│                        adt-plugin-abapgit                           │
├─────────────────────────────────────────────────────────────────────┤
│  XSD Schemas (xsd/)          →  ts-xsd codegen  →  TypeScript types │
│  (XML structure definition)     (build time)       + parser/builder │
├─────────────────────────────────────────────────────────────────────┤
│  Object Handlers (handlers/)                                        │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐       │
│  │  CLAS   │ │  INTF   │ │  DEVC   │ │  DTEL   │ │  DOMA   │       │
│  │ handler │ │ handler │ │ handler │ │ handler │ │ handler │       │
│  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘       │
│       └──────────┬┴──────────┬┴──────────┬┴──────────┘             │
│                  ▼           ▼           ▼                          │
│            createHandler (factory)                                  │
│            - Auto-registration                                      │
│            - Default serialize logic                                │
│            - File naming conventions                                │
├─────────────────────────────────────────────────────────────────────┤
│  ADK Facade (@abapify/adk)                                          │
│  - AdkClass, AdkInterface, AdkPackage...                            │
│  - Client-agnostic object model                                     │
│  - Source code retrieval via getSource()/getIncludeSource()         │
└─────────────────────────────────────────────────────────────────────┘
```

## 关键设计决定

### 1\. XSD Schemas作为真理的单一来源

**为什么是XSD?**

-   XML Schema 定义 (XSD) 是 **行业标准** xML 结构验证
-   可用 **在我们的工具之外** (例如, `xmllint --schema intf.xsd file.xml`(中文(简体) )
-   提供 **正式合同** 用于 abapGit XML 格式
-   启用 **自动验证** cI/CD管道中

```bash
# Validate any abapGit XML file against our schema
xmllint --schema xsd/intf.xsd myinterface.intf.xml --noout
```

### 2\. 安全型XML处理的ts-xsd

**为什么?**

不同于典型的只产生类型的XML代码工具, `ts-xsd` 规定:

-   **类型脚本** 带有完整类型的推论
-   **XML 解析器** 返回输入对象
-   **XML 构建器** 接受已输入对象
-   **Schema 对象** 用于运行时间验证

```typescript
// Generated from XSD - fully typed parse/build
import { intf } from './schemas/generated';

const data = intf.parse(xmlString); // → AbapGitIntf (typed)
const xml = intf.build(data); // → string (valid XML)
```

### 3\. ADK作为客户不可知面板

**为什么不在插件中执行 ADT 客户端特性 ?**

插件 **只消耗** aDK 外观 :

-   ADK 处理所有 SAP 通信细节
-   插件纯焦点 **序列化格式**
-   同一插件与任何 ADT 客户端执行配合
-   明确区分所关切的问题

```typescript
// Plugin receives ADK objects, doesn't care how they were fetched
getSources: (cls) =>
  cls.includes.map((inc) => ({
    suffix: ABAPGIT_SUFFIX[inc.includeType],
    content: cls.getIncludeSource(inc.includeType), // ADK handles this
  }));
```

### 4\. 不触摸文件系统

**为什么将文件操作委托给基地类?**

对象处理器 **只定义映射**数字 :

-   `toAbapGit()` - ADK数据 — abapGit XML结构
-   `getSource()` 编号 : `getSources()` - 要创建的源文件

这个 `createHandler` 工厂把手 :

-   正确命名的文件创建
-   XML 大楼,装有适当的信封
-   同步源承诺解析
-   空内容过滤

## 支持对象类型

| 类型 | 状态 | 处理器 | 页:1 |
| --- | --- | --- | --- |
| 分类 | ✅ | `clas.ts` | 多个包含( 主, 本地端, 本地端, 本地端, 测试类, 宏) |
| 内存 | ✅ | `intf.ts` | 单一源文件 |
| DEVC 维基百科 | ✅ | `devc.ts` | 固定文件名 `package.devc.xml` |
| 电信 | ✅ | `dtel.ts` | 仅元数据( 无来源) |
| 多米尼克 | ✅ | `doma.ts` | 自定义固定值的序列化 |

## 文件结构

```
src/
├── zcl_example.clas.abap              # Main class source
├── zcl_example.clas.locals_def.abap   # Local type definitions
├── zcl_example.clas.locals_imp.abap   # Local implementations
├── zcl_example.clas.testclasses.abap  # Test classes
├── zcl_example.clas.xml               # Class metadata
├── zif_example.intf.abap              # Interface source
├── zif_example.intf.xml               # Interface metadata
├── ztest_dtel.dtel.xml                # Data element (no source)
├── ztest_doma.doma.xml                # Domain (no source)
└── package.devc.xml                   # Package definition
```

## 发展

### 大楼

```bash
npx nx build adt-plugin-abapgit
```

### 测试

```bash
npx nx test adt-plugin-abapgit
```

### 重新生成Schemas 中

修改 XSD 文件后 :

```bash
npx nx codegen adt-plugin-abapgit
```

## 捐款

见 [捐款额](https://npmcn.com/package/%40abapify/adt-plugin-abapgit/CONTRIBUTING.md) 详细指南:

-   添加新对象类型支持
-   XSD 计划公约
-   执行模式
-   测试要求

## 另见

-   [abapGit 文档](https://docs.abapgit.org/)
-   [@abapify/adt-plugin (中文(简体) )](https://npmcn.com/package/%40abapify/adt-plugin/README.md) - 插件接口
-   [@abapify/adk (英语)](https://npmcn.com/package/%40abapify/adk/README.md) - ABAP发展工具包

## 常见问题

### @abapify/adt-plugin-abapgit 是什么？

abapGit 串行化插件,用于 adt- cli —— 回合式 ADT 对象到/ 从 abapGit 在磁盘上的格式

### 如何安装 @abapify/adt-plugin-abapgit？

在项目目录运行 npm install @abapify/adt-plugin-abapgit，或使用 pnpm add / yarn add / bun add。

### @abapify/adt-plugin-abapgit 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @abapify/adt-plugin-abapgit 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @abapify/adt-plugin-abapgit 可以商用吗？

@abapify/adt-plugin-abapgit 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @abapify/adt-plugin-abapgit 的下载量有多少？

根据 npm 官方下载统计，@abapify/adt-plugin-abapgit 在 2026/10/05 – 2026/11/03 这 30 天内被下载 3,113 次，日均约 104 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @abapify/adt-plugin-abapgit 还在维护吗？

最新版本 0\.4\.34 发布于 2026/11/03（4 天前）；至今共发布 30 个版本，其中过去 12 个月发布了 30 个；首次发布于 2026/04/21。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

