@ 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 文件,并且不会修改它们忽略的任何文件.
可用的代码
重写 __esri 命名空间
这个 refactor-out-esri-namespace 代码替换 __esri 明确从 @arcgis/core。 。 。 .
注意: 在运行编码器前, 全部更新
@arcgis/*在您的软件包package.json到最新版本.
在您的项目根中运行, 或者使用一个明确的目标目录 :
npx @arcgis/codemod run refactor-out-esri-namespace [<target-directory>]
在此之前:
let geometry: __esri.Geometry;
let featureSet: __esri.FeatureSet;
之后:
import type Geometry from "@arcgis/core/geometry/Geometry";
import type FeatureSet from "@arcgis/core/rest/support/FeatureSet";
let geometry: Geometry;
let featureSet: FeatureSet;
警告(需要人工审查)
编码器将发出警告,说明无法安全重写的情况,包括:
__esrijSDoc内部的参考文献- 复杂计算或动态类型用途
- 无法解析的符号
这些将在控制台上报告。 手动审查所有更改后再承诺.
将 Calcite 图标名称规范化
这个 normalize-calcite-icon-names codemod 更新了骆驼 Case 和 遗留的 Calcite 图标名称,使其符合规范
kebab- case 等同类型。 它处理 Calcite 组件上的图标属性,并通过变量追踪图标值,
属性、任务、函数返回和转发组件属性。 这有助于准备
第14967号钙-设计系统 财务报告和审定财务报表
钙-设计-系统# 14966。 。 。 .
在您的项目根中运行, 或者使用一个明确的目标目录 :
npx @arcgis/codemod run normalize-calcite-icon-names [<target-directory>]
在此之前:
<calcite-button iconStart="i3dGlasses" iconEnd="arrowLeft10" />
之后:
<calcite-button iconStart="3d-glasses" iconEnd="arrow-left-10" />
重命名几何运算符
在5.2版本中,为了提高一致性和可发现性,几何运算器出口和选项类型被重新命名.
这个 geometry-operator-renames codemod 更新几何操作员的呼叫以使用新名称.
此外,它还内含了不再需要的命名空间进口.
在您的项目根中运行, 或者使用一个明确的目标目录 :
npx @arcgis/codemod run geometry-operator-renames [<target-directory>]
在此之前:
import * as bufferOperator from "@arcgis/core/geometry/operators/bufferOperator";
const options: bufferOperator.Options = { unit: "meters" };
const buffered = bufferOperator.execute(polyline, 250, options);
之后:
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,匹配发行注释中的版本:
npx @arcgis/[email protected] run refactor-out-esri-namespace
解决问题
一些代码模型依赖于类型信息来进行更准确的迁移.
在大型代码库上,这可能需要比默认节点.js限制更多的RAM.
如果您遇到外出错误( 如 Allocation failed - JavaScript heap out of memory),以更高的内存限制重运行编码器:
Linux/macOS 示例:
NODE_OPTIONS="--max-old-space-size=10240" npx @arcgis/codemod run normalize-calcite-icon-names
窗口命令行 财务报告和审定财务报表 动力壳 使用不同的环境可变语法.
许可证
该软件包根据下列条款获得许可: LICENSE.md 文件,位于软件包的根,并在 https://js.arcgis.com/5.2/LICENSE.txt。 。 。 .
关于第三方通知,见 https://js.arcgis.com/5.2/第三方-通知.txt。 。 。 .