@codemod/cli

中文文档
3.3.0发布于 2023/02/19Apache-2.0TypeScriptCommonJS近 30 天下载 3.1万

代码重写 JavaScript 和 TypeScript

中文使用文档
文档目录7 节
  1. 安装
  2. 使用量
  3. 写入插件
  4. 使用 Babel 插件传送
  5. 向插件传递选项
  6. 捐款
  7. 许可证

代码

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

安装

从 无数字 :

$ npm install @codemod/cli

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

使用量

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

$ 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 在提交问题之前.

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

$ npx codemod --remote-plugin URL …

默认, codemod 通过使用 重铸 来解析和打印您的代码,保留原始注释和格式。 如果需要, 您可以使用 高级 或ESLint 或者你喜欢的其他工具.

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

写入插件

还有 许多, 许多已存在的插件 你可以用来。 但是,如果你需要自己写,你应该咨询 贝贝尔手册。如果您发布一个专门用作代码的插件,请考虑同时使用 babel-plugin 财务报告和审定财务报表 babel-codemod 关键词.

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

/**
 * 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 对象作为选项传递到插件 :

# 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

捐款

见 捐款额 (c) 提供关于设立发展项目和为项目作贡献的信息.

许可证

版权:2017 Brian Donovan

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

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

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

版本与发布记录

@codemod/cli 共发布 27 个版本,首次发布于 2018/12/11;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.3.0latest2023/02/193 年前
3.2.02023/02/173 年前
3.1.22021/11/154 年前
3.1.12021/11/154 年前
3.1.02021/11/154 年前
3.0.12021/11/134 年前

关于 @codemod/cli 的常见问题

@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 和提交记录判断。