问题标签 [codemod]

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 投票
2 回答
284 浏览

eslint - Codemod 与 eslint --fix

我想编写几个脚本来自动检测丢失的导入并根据根目录导入它们。将此脚本编写为 codemod 脚本还是带有 fix 选项的 eslint 规则更好?

0 投票
2 回答
1253 浏览

abstract-syntax-tree - 如何用刚刚解析的 javascript(string) 替换 AST 中的路径?

https://astexplorer.net/#/gist/70df1bc56b9ee73d19fc949d2ef829ed/7e14217fd8510f0bf83f3372bf08454b7617bce1

我现在发现我正在尝试replace一种表达方式,我不在乎里面有什么。

在这个例子中,我找到了this.state.showMenu && this.handleMouseDown部分

我需要转换为:

在不明确重建树的情况下如何做到这一点?我只想做类似的事情

0 投票
1 回答
443 浏览

javascript - jscodeshift抛出错误:不匹配类型字符串

我正在尝试改变它:

进入这个:

所以我为jscodeshift编写了以下codemod:

但我得到了错误:

0 投票
3 回答
488 浏览

jscodeshift - 如何在检查模式下启动 jscodeshift?

这曾经是可运行的,但最近我遇到了以下问题。

通过运行以下命令:

节点 --inspect-brk ./node_modules/.bin/jscodeshift mod.js 文件。

我遇到了这个问题

0 投票
2 回答
669 浏览

javascript - 带有 jscodeshift 的 Codemod - 从导入中删除逗号

我正在尝试编写一个小的 codemod 来重构一些代码。考虑一下我有这样的事情:

我想将其更改为:

作为第一步,我试图mod2从我成功完成的第一行导入中删除,但我无法删除mod1.

到目前为止,我的代码片段如下所示:

请帮忙。

0 投票
1 回答
669 浏览

reactjs - 使用流项目为 javascript 运行 react-codemod 时出错

在使用流的 javascript 项目中运行时遇到错误。

npx react-codemod 重命名-不安全-生命周期

如何让这个 codemod 正常运行。这是将项目的 React 版本升级到 16.9+ 所必需的

0 投票
0 回答
34 浏览

javascript - Codemod - 在使用导出语法的节点中读取文件

npm处理在任何给定源存储库上运行 codemod的包。作为我的 codemod 的一部分,我希望替换源存储库中的某些值。在替换这些值之前,我需要检查从特定文件(我们称之为constants.js)导出的对象中的值是否存在这些值。我需要执行的上述检查constants.js是有条件的。如果 codemod 的用户想要查找constants.js文件是有条件的。该constants.js文件使用该import..export语句导出我需要的对象。

关于如何从该文件中提取对象的任何指示?我不能在babel这里真正使用该选项,所以我正在尝试使用这些fs方法来获得我想要的东西。我使用的createReadStream方法是读取文件,但是解析它以提取默认导出似乎很脆弱。有没有一种干净的方法可以得到我需要的东西?

在下面的示例中,我希望能够提取Messages,以便查找termsOfUse我的 codemod 更改。

常量.js

在此先感谢您的帮助。

0 投票
1 回答
613 浏览

javascript - jscodeshift TypeScript codemod - 删除通用类型但保留包装类型

我目前正在尝试编写一个 codemod,它将$ReadOnly<T>从 TypeScript 代码库中删除所有泛型,仅保留TT作为对象/联合)

到目前为止,这就是我想出的

我们的想法是修改如下内容:

对此:

不幸的是,这就是我最终的结果,带有重复的type关键字:

知道这里可能出了什么问题吗?

0 投票
1 回答
31 浏览

javascript - Babel 类型转换 - 在运算符周围添加空间。如何绕过?

我有一行代码正在尝试使用 babel 转换。

这个,const [firstName, setFirstName] = useState<string>("")

但是,当我运行转换以插入此代码时,<brackets>它们周围都有额外的空间。所以我得到useState < string > ("")...

我觉得这可能是故意的代码格式。但对于这个特定领域,我希望它不要那样做。我不希望运算符周围的额外空间仅用于我的这部分代码。我怎样才能做到这一点?

这是我的转换/配置

"@babel/core": "^7.12.13",

"@babel/plugin-syntax-typescript": "^7.12.13",

我只能找到有关如何添加额外间距的信息,但不能删除它。

0 投票
1 回答
71 浏览

babeljs - 使用 codemod 运行时,Babel 插件 addComment 不起作用

我创建了一个 babel 插件:

我希望它应该// @@@ My precious @@@在模块顶部添加一个注释行,并在注释后添加一个空行。

我用@codemod/cli 运行了这个插件:

而且我在源文件中只插入了一个空行,没有注释行。如果我在 astexplorer.net 中尝试相同的代码,它工作正常。

我尝试使用 "comments": true 选项添加 .babelrc 文件并使用 --find-babel-config 参数运行 codemod。同样的结果。

我做错什么了?