gpt4 book ai didi

javascript - 如何在jscodeshift中逐行获取代码

转载 作者:行者123 更新时间:2023-11-30 20:40:31 25 4
gpt4 key购买 nike

我是 jscodeshift 的新手。是否可以逐行获取代码。

export default function transformer(file, api) {
const j = api.jscodeshift;


return j(file.source).forEach(p => {
p.value.program.body.forEach(p => {
console.log(p)
});

}).toSource();
}

但这种方法的问题在于我无法将转换应用于变量 p 中获得的结果。例如。对于下面的输入

    var a = "hello";
var b = "stackoverflow";
var c = a + b;

我需要逐行转换内容。是否可以在 jscodeshift 中逐行应用转换。

最佳答案

您可以使用 .get().node.program.body 并对其进行循环: http://astexplorer.net/#/gist/fea38e8a6837d227fd02cb1297824280/be3b1fb941ee3e6dfbe4eea86610a3ad48e2b511

这个:

const transformer = (file, api) => {
const j = api.jscodeshift;
const root = j(file.source);

root.get().node.program.body.map((line) => {
line.kind = "const";
});
return root.toSource();
};
export default transformer;

转换:

var a = "hello";
var b = "stackoverflow";
var c = a + b;

收件人:

const a = "hello";
const b = "stackoverflow";
const c = a + b;

您没有要求进行精确的转换,所以我只是提供了一个变形每一行的示例。

但是您应该注意到,抽象语法树的优点是您不需要需要逐行查看。如果您能够提供您正在寻找的转换,那么社区可能会为您提供比逐行循环更好的解决方案。

关于javascript - 如何在jscodeshift中逐行获取代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49319259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com