@abaplint/transpiler-cli

中文文档
2.14.17发布于 2026/11/05MITTypeScript零依赖近 30 天下载 3.8万

Transpiller - 命令行接口

中文使用文档
文档目录4 节
  1. 实例
  2. 输出布局
  3. 固定一个库
  4. 重复的依赖关系

@abaplint/ transpiller-cli (英语)

转接器 CLI

实例

打电话 abap_transpile 在命令行上,请参见示例

https://github.com/larshp/abap-advent-2020/blob/main/package.json#L8 (中文(简体) )

重复复合型构造器的共享工厂功能由 默认。 每一次工厂呼叫都会产生新鲜的ABAP值. 保留内线 构造器输出, 设定 options.sharedTypeFactories 改为 false 内 abap_transpile.json数字 :

{
  "options": {
    "sharedTypeFactories": false
  }
}

关闭选项或设置为 true 使用共享工厂.

输出布局

CLI 将生成的项目文件写入 output_folder/project/全部数据 input_folder 条目属于同一项目,包括一系列源 文件夹。 原始的ABAP源保留在其输入目录中.

每个 ABAP 库都有自己的文件夹 output_folder文件夹名称为 寄存器基名来源 url (没有后面的斜线或 .git),或 基本名称 folder 仅供本地图书馆使用。 设定 libs[].name 以覆盖它 :

{
  "input_folder": ["src", "extra"],
  "output_folder": "output",
  "incremental_output": true,
  "libs": [
    {"url": "https://github.com/open-abap/open-abap-core"},
    {"folder": "./deps/utilities", "name": "utilities"}
  ],
  "write_unit_tests": true,
  "write_source_map": true,
  "options": {"addCommonJS": true}
}
output/
  init.mjs
  _init.mjs
  _top.mjs
  index.mjs
  _unit_open.mjs
  project/
    zapp.prog.mjs
    zapp.prog.mjs.map
  open-abap-core/
    ...
  utilities/
    ...

名称必须是Windows和POSIX上有效的单一目录名称. 名称是 独一无二,不考虑案件 project 预留。 冲突衍生 名称需要明确 libs[].name。跨库复制 ABAP 对象 默认拒绝; 项目对象将替换同类型/同名的库对象.

本地类、测试类、函数组、MIME数据以及 源地图跟随他们自己的对象. 原始地图包括ABAP原始内容, 包括从临时 Git 取出中装入的库; 它们使用稳定 库合格路径,不披露临时取出位置. 导入和注册的 MIME 文件名参考新路径 .

共享初始化脚本和测试跑取器仍为输出根. 运行程序 node output/project/zapp.prog.mjs; 运行项目单位测试 与 node output/index.mjs。从平面输出移出时,重建清洁 生成输出目录并更新引用个人的脚本 模块或资产.

设定 incremental_output 改为 true ,替换 更改已生成的文件,并删除已记录的已过期文件 output/.abap-transpile-manifest.json。 CLI 保存它没有保存的文件 生成,包括自定义设置脚本和其他用户数据。 现有产出 从启用此选项之前的运行中没有所有权目录; 做一个 采用删除遗留的 stale 文件的选项时清除构建 。 设定 选项到 false (默认)恢复无条件写作。 文件 已禁用时生成的不添加到目录中.

该清单在解剖学上得到更新,如果运行,则保留作为恢复援助 失败。 这并不能使整个输出树进行交易. 使用一个 每个输出目录的转接程序.

转接器库保留平面输出,除非其调用器提供输出 文件夹映射为第三个参数 Transpiler.run()启用此布局 自动通过 CLI.

固定一个库

一个图书馆,由 url 当 CLI 运行时被克隆,所以没有更多的 使用该刻度的默认分支, 而同一工程承诺可以构建 不一样的一天到第二天。 设定 libs[].ref 承诺SHA,标签 或使建筑可复制的分支:

{
  "libs": [
    {"url": "https://github.com/open-abap/open-abap-core", "ref": "239b817e6fd05e62854fed25663f002c60dda07c"},
    {"url": "https://github.com/example/utilities", "ref": "v1.2.0"}
  ]
}

分支或标记被克隆为浅. 犯罪被轻取出名 服务器不为它服务,或者 SHA 缩写为,完整的历史是 取出并检查了承诺。 CLI 打印每个 库,它复制,和每一个 folder 是一个 git 退出的库, 如 commit: <sha> 在文件数旁边,所以一个构建的约定可以是 记录.

重复的依赖关系

默认情况下, 两个库定义相同的 ABAP 对象( 类型和名称) 原因 a 一个 Ambiguous dependency object 错误。 保留现有的依赖性储存库 并跳过以后的复制件,将此顶级选项设置在 abap_transpile.json数字 :

{
  "skip_duplicate_dependencies": true
}

第一个图书馆 libs 包含对象的胜负。 每一个文件 后置库中的对象被跳过,包括元数据、类本地数据,以及 二进制资产。 CLI 警告每个库中每个跳过的对象一次,命名 选定的库。 导入、输出文件夹和源地图使用选中的 copy. 项目对象仍然优先于依赖,并共享 package.devc.xml 元数据保持其现有的行为.

库命令现在影响生成的输出 。 不同的定义可以改变 DDIC 类型、可用方法和运行时行为,或导致语法错误 代码等待被跳过版本。 此选项不检查副本是否为 等同或压制语法检查。 将预定提供者放在首位 运行您的应用程序的测试。 用于选择性控制,使用 libs[].exclude_filter 只排除想要的对象的文件。 与 incremental_output 启用, 更改提供者会删除清单中跟踪的过时文件 . 在遗留模式下更改提供者时使用干净生成的输出目录 或当未跟踪到的陈旧产出仍然来自早先的建筑.

版本与发布记录

@abaplint/transpiler-cli 共发布 1,428 个版本,首次发布于 2020/09/26;过去 12 个月发布了 145 个版本。

版本发布日期距今
2.14.17latest2026/11/051 天前
2.14.162026/11/042 天前
2.14.152026/10/298 天前
2.14.142026/10/288 天前
2.14.132026/10/289 天前
2.14.122026/10/2610 天前

关于 @abaplint/transpiler-cli 的常见问题

@abaplint/transpiler-cli 是什么?

Transpiller - 命令行接口

如何安装 @abaplint/transpiler-cli?

在项目目录运行 npm install @abaplint/transpiler-cli,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 abap_transpile,可以用 npx abap_transpile 直接运行。

@abaplint/transpiler-cli 支持 TypeScript 吗?

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

@abaplint/transpiler-cli 可以商用吗?

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

@abaplint/transpiler-cli 的下载量有多少?

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

@abaplint/transpiler-cli 还在维护吗?

最新版本 2.14.17 发布于 2026/11/05(1 天前);至今共发布 1428 个版本,其中过去 12 个月发布了 145 个;首次发布于 2020/09/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。