# @codemod/cli 中文文档

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

版本：3\.3\.0
npm 元数据更新时间：2023-02-18T17:40:39.814Z
中文译文更新时间：2026-11-10T07:17:17.177Z
软件包许可：Apache-2\.0

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

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

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

- 包体积（解压后）：116 kB，53 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=12\.0\.0
- 运行依赖：26 个
- 首次发布：2018-12-10T18:49:32.373Z
- 最新版本发布：2023-02-18T17:40:39.656Z
- 近 30 天下载量：30700（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：27（近 12 个月 0 个）

## 中文简介

代码重写 JavaScript 和 TypeScript

## 安装

```sh
npm install @codemod/cli
```

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

## README

# 代码

代码重写 JavaScript 和 TypeScript 使用 Bail 插件.

## 安装

从 [无](https://npmjs.com/)数字 :

```sh
$ npm install @codemod/cli
```

这将在本地安装跑道作为 `codemod`。此软件包需要节点 v16级以上. 这个读取器假设你已经安装在本地, 但你也可以 全球安装 `npm install -g @codemod/cli`。 。 。 .

## 使用量

主界面作为命令行工具,通常运行类似:

```sh
$ npx codemod --plugin transform-module-name \
  path/to/file.js \
  another/file.js \
  a/directory
```

这将重写文件 `path/to/file.js`, (中文(简体) ), `another/file.js`,以及发现于 `a/directory` 用 bail 插件转换它们 `transform-module-name`。可以指定多个插件,可以同时重写多个文件或目录.

注意TypeScript支持由bayl提供,因此可能不完全支持所有有效的TypeScript代码. 如果你遇到问题,请考虑在 [标有标签的贝尔问题 `area: typescript`](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3A%22area%3A+typescript%22+) 在提交问题之前.

插件也可以从远程 URL 中装入, 包括保存 [AST 浏览器](https://astexplorer.net/) URL, 使用 `--remote-plugin`。该特性只应用作加载您或您信任的人所写的代码的方便。 它会随您的全部用户权限运行, 所以请保持谨慎!

```sh
$ npx codemod --remote-plugin URL …
```

默认, `codemod` 通过使用 [重铸](https://github.com/benjamn/recast) 来解析和打印您的代码,保留原始注释和格式。 如果需要, 您可以使用 [高级](https://prettier.io/) 或ESLint 或者你喜欢的其他工具.

对于更详细的选项,运行 `npx codemod --help`。 。 。 .

## 写入插件

还有 [许多, 许多已存在的插件](https://www.npmjs.com/search?q=babel-plugin) 你可以用来。 但是,如果你需要自己写,你应该咨询 [贝贝尔手册](https://github.com/thejameskyle/babel-handbook)。如果您发布一个专门用作代码的插件,请考虑同时使用 [`babel-plugin`](https://www.npmjs.com/search?q=babel-plugin) 财务报告和审定财务报表 [`babel-codemod`](https://www.npmjs.com/search?q=babel-codemod) 关键词.

`@codemod/cli` 提供了几个帮助,使写作编码插件更容易. 例如:

```ts
/**
 * This codemod rewrites `A * A` to `A ** 2` for any expression `A`.
 */
import { defineCodemod } from '@codemod/cli'

// `m` is `@codemod/matchers`, a library of useful matchers
// `t` is `@babel/types`, babel AST type predicates and builders
export default defineCodemod(({ t, m }) => {
  // `operand` is a capture matcher that will be filled in by `multiplyBySelf`,
  // which is a binary expression matcher that matches any expression multiplied
  // by itself.
  const operand = m.capture(m.anyExpression())
  const multiplyBySelf = m.binaryExpression(
    '*',
    operand,
    m.fromCapture(operand)
  )

  return {
    visitor: {
      BinaryExpression(path) {
        m.match(multiplyBySelf, { operand }, path.node, ({ operand }) => {
          path.replaceWith(
            t.binaryExpression('**', operand, t.numericLiteral(2))
          )
        })
      },
    },
  }
})
```

### 使用 Babel 插件传送

`codemod` 支持由标准 Babel 或 TypeScript 构建工具链所支持的解析语言特性,类似于一个 Create React App 构建管道可以处理的内容. 使用这些语言特性来写插件.

### 向插件传递选项

您可以将 JSON 对象作为选项传递到插件 :

```sh
# Pass a JSON object literal
$ npx codemod --plugin ./my-plugin.ts --plugin-options '{"opt": true}'
# Pass a JSON object from a file
$ npx codemod --plugin ./my-plugin.ts --plugin-options @opts.json
```

## 捐款

见 [捐款额](https://npmcn.com/package/CONTRIBUTING.md) (c) 提供关于设立发展项目和为项目作贡献的信息.

## 许可证

版权:2017 Brian Donovan

根据 Apache 许可证, 版本 2. 0 (“ License ”) 获得许可; 您不能使用此文件, 除非符合许可证 。 您可在下列地点获得许可证副本:

```
http://www.apache.org/licenses/LICENSE-2.0
```

除非适用的法律要求或书面同意,根据许可证分发的软件在 " AS IS " BASIS上分发,没有任何明示或默示的WARANTIES或CONDITION。 见《许可证》关于许可和许可证限制的具体语言.

## 常见问题

### @codemod/cli 是什么？

代码重写 JavaScript 和 TypeScript

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

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

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

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

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

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @codemod/cli 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=12\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

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

@codemod/cli 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

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

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

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

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

