# @arcgis/codemod 中文文档

规范地址：https://npmcn.com/package/%40arcgis/codemod/

版本：5\.2\.2
npm 元数据更新时间：2026-11-10T17:07:58.262Z
中文译文更新时间：2026-11-10T16:51:14.371Z
软件包许可：SEE LICENSE IN LICENSE\.md

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

原始 npm 页面：https://www.npmjs.com/package/%40arcgis/codemod
原文对照：https://npmcn.com/package/%40arcgis/codemod/?lang=original

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

- 包体积（解压后）：691 kB，23 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- 运行依赖：9 个
- 首次发布：2026-02-10T04:35:44.922Z
- 最新版本发布：2026-11-10T16:34:29.274Z
- 近 30 天下载量：9989（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：390（近 12 个月 390 个）

## 中文简介

一个用于JavaScript代码库的更新和现代化ArcGIS地图SDK的代码模块工具包.

## 安装

```sh
npm install @arcgis/codemod
```

也可以使用：`pnpm add @arcgis/codemod`、`yarn add @arcgis/codemod`、`bun add @arcgis/codemod`

## README

# @ arcgis/ codemod

一个用于JavaScript代码库的更新和现代化ArcGIS地图SDK的代码模块工具包.

这个软件包提供了自动化的再构件来帮助迁移远离被腐烂或遗留的模式. 其中包括用于去除 `__esri` 名称空间和 将全局命名空间类型转换为清晰 `@arcgis/core` 进口, 将遗留的 Calcite 图标名称正常化, 并更新几何运算符的使用.

## 所需资源

-   节点.js 24
-   JavaScript 使用 ArcGIS 映射 SDK 的项目
-   这个代码mod专门运行在 TypeScript 文件上. 如果工程不使用 TypeScript , 您不需要运行此工具 .

## 在你开始之前

确保您的工程的依赖关系及时更新, 例如运行 `pnpm install`。 。 。 .

如果您的项目使用 **ESLint, Pretier, 或其他格式化器/连接器**,在代码模块之后运行,以确保格式一致.

> \[!注\] Codemods修改已设置的文件,不提供交互式干跑模式. 我们建议在项目中运行它 在版本控制( Git) 下, 您可以使用 `git diff` 或您的 IDE 的 diff 工具。 狦 工程不在版本控制下,在运行代码模块前创建备份 .

默认情况下,代码mods运行在目前目录和子目录中的所有TypeScript文件中. 您可以通过提供它作为参数来手动在不同的目录上运行它.

代码尊重 `.gitignore` 文件,并且不会修改它们忽略的任何文件.

## 可用的代码

-   [`refactor-out-esri-namespace`](https://npmcn.com/package/%40arcgis/codemod/#readme-refactor-out-the-__esri-namespace)
-   [`normalize-calcite-icon-names`](https://npmcn.com/package/%40arcgis/codemod/#readme-normalize-calcite-icon-names)
-   [`geometry-operator-renames`](https://npmcn.com/package/%40arcgis/codemod/#readme-rename-geometry-operators)

### 重写 `__esri` 命名空间

这个 `refactor-out-esri-namespace` 代码替换 `__esri` 明确从 `@arcgis/core`。 。 。 .

> 注意: 在运行编码器前, 全部更新 `@arcgis/*` 在您的软件包 `package.json` 到最新版本.

在您的项目根中运行, 或者使用一个明确的目标目录 :

```sh
npx @arcgis/codemod run refactor-out-esri-namespace [<target-directory>]
```

**在此之前:**

```tsx
let geometry: __esri.Geometry;
let featureSet: __esri.FeatureSet;
```

**之后:**

```tsx
import type Geometry from "@arcgis/core/geometry/Geometry";
import type FeatureSet from "@arcgis/core/rest/support/FeatureSet";

let geometry: Geometry;

let featureSet: FeatureSet;
```

#### 警告(需要人工审查)

编码器将发出警告,说明无法安全重写的情况,包括:

-   `__esri` jSDoc内部的参考文献
-   复杂计算或动态类型用途
-   无法解析的符号

这些将在控制台上报告。 手动审查所有更改后再承诺.

### 将 Calcite 图标名称规范化

这个 `normalize-calcite-icon-names` codemod 更新了骆驼 Case 和 遗留的 Calcite 图标名称,使其符合规范 kebab- case 等同类型。 它处理 Calcite 组件上的图标属性,并通过变量追踪图标值, 属性、任务、函数返回和转发组件属性。 这有助于准备 [第14967号钙-设计系统](https://github.com/Esri/calcite-design-system/issues/14967) 财务报告和审定财务报表 [钙-设计-系统# 14966](https://github.com/Esri/calcite-design-system/issues/14966)。 。 。 .

在您的项目根中运行, 或者使用一个明确的目标目录 :

```sh
npx @arcgis/codemod run normalize-calcite-icon-names [<target-directory>]
```

**在此之前:**

```tsx
<calcite-button iconStart="i3dGlasses" iconEnd="arrowLeft10" />
```

**之后:**

```tsx
<calcite-button iconStart="3d-glasses" iconEnd="arrow-left-10" />
```

### 重命名几何运算符

在5.2版本中,为了提高一致性和可发现性,几何运算器出口和选项类型被重新命名. 这个 `geometry-operator-renames` codemod 更新几何操作员的呼叫以使用新名称. 此外,它还内含了不再需要的命名空间进口.

在您的项目根中运行, 或者使用一个明确的目标目录 :

```sh
npx @arcgis/codemod run geometry-operator-renames [<target-directory>]
```

**在此之前:**

```ts
import * as bufferOperator from "@arcgis/core/geometry/operators/bufferOperator";
const options: bufferOperator.Options = { unit: "meters" };
const buffered = bufferOperator.execute(polyline, 250, options);
```

**之后:**

```ts
import { bufferExecute, type BufferExecuteOptions } from "@arcgis/core/geometry/operators/bufferOperator";
const options: BufferExecuteOptions = { unit: "meters" };
const buffered = bufferExecute(polyline, 250, options);
```

## 版本

在相应被贬值的特性被去除之前,代码mods是可用的. 如果从更早的版本迁移,在最新版本的版本中,代码mod可能不再可用 `@arcgis/codemod` 软件包. 在这种情况下,从更旧的版本运行代码mod,匹配发行注释中的版本:

```sh
npx @arcgis/codemod@5.2 run refactor-out-esri-namespace
```

## 解决问题

一些代码模型依赖于类型信息来进行更准确的迁移. 在大型代码库上,这可能需要比默认节点.js限制更多的RAM. 如果您遇到外出错误( 如 `Allocation failed - JavaScript heap out of memory`),以更高的内存限制重运行编码器:

Linux/macOS 示例:

```sh
NODE_OPTIONS="--max-old-space-size=10240" npx @arcgis/codemod run normalize-calcite-icon-names
```

[窗口命令行](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/set_1) 财务报告和审定财务报表 [动力壳](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-7.6) 使用不同的环境可变语法.

## 许可证

该软件包根据下列条款获得许可: `LICENSE.md` 文件,位于软件包的根,并在 [https://js.arcgis.com/5.2/LICENSE.txt](https://js.arcgis.com/5.2/LICENSE.txt)。 。 。 . 关于第三方通知,见 [https://js.arcgis.com/5.2/第三方-通知.txt](https://js.arcgis.com/5.2/third-party-notices.txt)。 。 。 .

## 常见问题

### @arcgis/codemod 是什么？

一个用于JavaScript代码库的更新和现代化ArcGIS地图SDK的代码模块工具包\.

### 如何安装 @arcgis/codemod？

在项目目录运行 npm install @arcgis/codemod，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 codemod，可以用 npx codemod 直接运行。

### @arcgis/codemod 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/arcgis\_\_codemod 是否存在。

### @arcgis/codemod 支持 ESM 还是 CommonJS？

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

### @arcgis/codemod 可以商用吗？

@arcgis/codemod 使用 SEE LICENSE IN LICENSE\.md 许可。许可条款写在包内的独立文件中，请阅读该文件确认可否商用。以上为概括，不构成法律意见，请以许可原文为准。

### @arcgis/codemod 的下载量有多少？

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

### @arcgis/codemod 还在维护吗？

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

