问题标签 [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 投票
2 回答
396 浏览

javascript - codemod/transform 包括 BlockStatement

我正在做一个codemod /转换来更改我的代码中的if/return语句。

我有很多,if(err) do something我需要重构这种行为。

我怎样才能为此进行转换?

我有的:

我想要的是:

到目前为止,我设法替换node.consequent并直接使用 a callExpression

...导致:

如何在里面也包含 theBlockStatement和 areturn呢?这是执行此codemod的正确方法吗?

活的例子在这里

0 投票
2 回答
141 浏览

javascript - Javascript模板双引号

我有一个问题,我有一个文件,其中包含表单中的对象

我正在构建一个程序,它会自动从文件中填充我的对象,但当前输出的形式为

我的问题是我需要在“red”和“Tom”周围加上单引号或双引号,但其他所有内容都不需要。我曾尝试使用 jscodeshift,但似乎无法正常工作。有人对此有任何提示吗?

非常感谢您的宝贵时间,乔

0 投票
1 回答
463 浏览

javascript - 使用 jscodeshift 添加表达式时,错误 {...} 与类型字符串不匹配

我正在尝试 jscodeshift,每当我尝试插入新表达式时,我都会收到以下错误

这是我的小测试中的内容:

你可以在这里试试https://astexplorer.net/#/P6euf9XIlR/1

如果我使用 j(file.source).find().replaceWith() 它没有任何问题。

我在这里做错了什么?

0 投票
1 回答
709 浏览

javascript - js 代码转换或从 jQuery 到本机的转换器?

因此,如果我需要像这样更改代码:

像原生一样

我可以做类似的事情(https://astexplorer.net/#/0rIHMowCQf

作为第一步,这将删除 jQuery$符号,只留下一个()可以工作的,但感觉就像我在作弊,因为我只是给 CallExpression 一个空的标识符。我仍然需要发现如何替换参数的顺序。

js代码转换可以用于这种情况,比如将jQuery转换为Native,最终只是:

0 投票
1 回答
141 浏览

javascript - 从 ForInStatement 到 ForStatement 的 codemod

我有一个要转换的 codemod

进入

我做到了这一点:

这让我走到了这一步:

我仍然有点迷失从头开始创建东西......

问题:

  • 我这样做对吗?感觉很冗长,但也许这是要走的路。
  • 如何完成?例如,我失踪了foo.length...

PS: Felix,如果您正在阅读本文,请指出我可以在哪里发送拉取请求以改进文档!在我尝试学习此 API 时,我很乐意提供帮助。哦,还有菲利克斯,你们做的工具真好!

0 投票
1 回答
381 浏览

node.js - 组织需求并将它们移动到文档顶部

我正在应用程序中组织代码。require 语句是杂乱无章的,所以我制作了这个 codemod 来对它们进行排序并将它们添加到页面顶部。

codemod 工作,几乎完美。我有些疑惑:

  • 这是一个好的方法,还是有更正确的方法来使用 API?
  • 如何在sourceStart(所有要求)和其余源代码之间保留空行?
  • 可以在 ES6 导入中使用类似的方法吗?(即用 jscodeshift 对它们进行排序)

我的初始代码:

我的代码模块:

我得到的结果是:

0 投票
1 回答
599 浏览

javascript - 如何强制 jscodeshift/recast 在对象表达式中保留尾随逗号?

我一直在编写一些转换来帮助我重构代码库。我所做的基本上是向某些对象表达式添加一个新属性。为什么jscodeshift/recast要从这些对象中删除尾随逗号?我怎样才能防止这种情况?

0 投票
0 回答
303 浏览

javascript - JSCodeShift:创建 Ajax 请求

我目前正在使用 JSCodeShift 以便在我的应用程序中从 amplify 迁移到 jquery ajax 服务调用。我正在尝试在我的 JSCodeShift 转换文件中创建一个 return 语句,但不断遇到一个冗余错误,由于文档较少,我无法弄清楚。有没有人创建了一个返回语句或用 JSCodeShift 术语“returnExpression”。

这就是我要添加到功能块主体的内容:

这是我不断遇到的错误:

这是我到目前为止编写的转换文件:

检查我尝试使用 jscodeshift 创建 Ajax 请求的函数 createAjaxRequest

谢谢, 安基特

0 投票
1 回答
274 浏览

jscodeshift - jscodeshift/recast:objectExpression 总是打印得很漂亮。我怎样才能防止这种情况?

我正在使用 jscodeshift 来转换函数调用:

foo() --> foo({uid: ... 标签: ...})

问题是 objectExpression 总是打印得很漂亮:

如何防止这种情况并得到类似的东西:

0 投票
1 回答
1054 浏览

javascript - jscodeshift 更改对象文字值

使用 jscodeshift,我该如何转换

?

我努力了

但我最终得到

这表明replaceWith只更改键而不是值。