问题标签 [jscodeshift]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
27 浏览

npm - Npm 脚本不运行包含 glob 模式的脚本

我有的

我正在使用jscodeshift库来修改一些文件,所以我npm script像这样运行它:

但是控制台输出抛出,问题是,如果我输入脚本工作No files selected, nothing to do.的绝对路径。src/gql/specificFolder/gqlTypes/specificFile.specificExtension

我试过的

  1. 用单引号包裹路径:
  1. 用转义的双引号包裹路径:

环境

  • 窗户 10
  • npm 7.7.3
0 投票
0 回答
35 浏览

jscodeshift - 如何取消注释 JSCodeshift 中的注释行或块

我一直在尝试转换脚本中的注释行以取消注释它们,但我找不到任何注释。

0 投票
0 回答
46 浏览

javascript - 如何使用 jscodeshift 创建程序节点

我正在使用 jscodeshift 提取某些来源的片段并将它们移动到一个新文件中。

我想使用 recast 的 API 创建一个合适的程序主体,但我没有找到可行的方法。

jscodeshift 公开了程序构建器,但没有适当的主体构建器,并且没有一个构建器与 StatementKind 的预期形状匹配。

这是我尝试过的:

但我得到这个错误:

“VariableDeclaration”类型的参数不能分配给“StatementKind[]”类型的参数。

有什么惯用的方法来实现这一点吗?或者我应该只构建节点,将它们推送到已经转换为字符串的数组(使用toSource),然后将该数组写入目标文件?这就是我现在正在做的事情,但我猜测是否有更好的方法。

0 投票
0 回答
67 浏览

jscodeshift - jscodeshift 如何在 AST 中获取 typeof 变量?

ts代码:

jscodeshift代码:

我需要将代码中的'Name'改成其他文案,但只需要修改'columns'中的'Name','nameObject'和'name'不需要修改,怎么找变量type(NameObject, string, Column[]) 判断是否需要修改?

0 投票
0 回答
24 浏览

javascript - jsCodemod 的更新变量引用问题

我对 jscodeshift 很陌生。

目标: 我正在尝试构建一个执行以下操作的 codemod:

  1. 删除旧导入 -> 完成
  2. 添加新的导入 -> 完成
  3. 更新旧导入的所有引用 -> 不确定如何执行此操作

我正在为此任务使用转换导入库。

源代码:

代码:

问题: 如何更新代码中对QuerytoiQuery的引用?

0 投票
2 回答
88 浏览

javascript - 在大型 javascript 代码库中使用 codemods 将所有 let 变量声明更改为 const

我想在代码库中使用的约定是:

然而,代码中有很多地方是这样写的:

我想写一个codemod,可能使用JSCodeshift,可以将变量声明的第二种样式更改为第一种。我一直在对 AST 进行一些研究,并一直在使用 AST explorer。但是,我无法访问抽象语法树中的变量声明符“kind”。

我尝试过的一个例子是:

任何帮助或方向将不胜感激!谢谢!

0 投票
1 回答
62 浏览

reactjs - 使用 jscodeshift 移除外部 React 组件

我正在做一个小项目,我需要从树中删除特定组件而不删除其子项。

让我们想象下面的代码:

使用 jscodesift,我想删除<Background color="XXX">打开和关闭元素,以便输出为:


现在,我一直在努力寻找一种方法来删除nodePath.node.openingElementnodePath.node.closingElement不删除他们的孩子。

有人知道我想做的事情是否可行吗?什么可以帮助我解决这个问题?

0 投票
0 回答
34 浏览

typescript - 删除节点时,使用 tsx 解析器 jscodeshift 在类型声明的末尾添加逗号

我正在尝试更新与流配合使用的 codemod 以使用 typescript。在流程中,我能够很好地完成任务,即在类型声明中查找特定属性并将其删除。使用流解析器时,您必须使用正常工作的 ObjectTypeProperty。使用打字稿的特定选择器时,打字稿会出现问题。

输入:

执行:

输出:

预期的输出完全相同,只是没有逗号。

0 投票
0 回答
19 浏览

javascript - 为什么选择 ASTPath不可分配给 ASTPath 类型的参数

我正在使用 JSCodeshift 迁移一些旧的 JS 文件。我要做的一件事是找到所有函数(普通函数和箭头函数),然后在它们的主体中添加一些代码。要找到两者,我只需使用通用 Function 构造函数来搜索所有可能的函数。但是,当我尝试在 jscodeshift 函数上使用 find 节点时,会出现类型错误。所以,这个简单的代码可以作为一个例子:

这是完整的错误:

看Error的定义,是扩展ASTNode,应该兼容吧?

但是,如果我使用 ArrowFunctionExpression 作为查找查询:

它不会抱怨类型,这很奇怪,因为 ArrowFunctionExpression 只是扩展了 Function 类型

0 投票
1 回答
53 浏览

javascript - jscodeshift 将 forEach 转换为 for 循环

我是 jscodeshift 和 AST 的新手,但我正在尝试对现有的 forEach 循环进行转换并将它们转换为常规的 for 循环。

我想隐藏以下内容:

对此:

我一直在浏览一些文档并进行搜索,但我找不到这样做的方法。