jscodeshift - 如何在块语句的开头插入调用表达式
jscodeshift - How to insert a call expression at the beginning of a blockstatement
我正在研究 AST。我现在的目标是为文件中的每个块语句添加一个标识符。但是 ast explorer 抛出一个我无法破译的错误。
function foo() {
console.log('bar');
}
在mod
之后
function foo() {
baz
console.log('bar');
}
如何使用 jscodeshift 添加这样的东西。
有两件事你需要注意
- 块语句由一组语句组成。您想要添加到该数组。
- 您不能将裸表达式(例如标识符)插入该数组。您实际上必须创建一个
ExpressionStatement
.
以下方法可行:
root
.find(j.BlockStatement)
.forEach((path) => {
path.get('body').value.unshift(j.expressionStatement(j.identifier('bar')));
});
我正在研究 AST。我现在的目标是为文件中的每个块语句添加一个标识符。但是 ast explorer 抛出一个我无法破译的错误。
function foo() {
console.log('bar');
}
在mod
之后function foo() {
baz
console.log('bar');
}
如何使用 jscodeshift 添加这样的东西。
有两件事你需要注意
- 块语句由一组语句组成。您想要添加到该数组。
- 您不能将裸表达式(例如标识符)插入该数组。您实际上必须创建一个
ExpressionStatement
.
以下方法可行:
root
.find(j.BlockStatement)
.forEach((path) => {
path.get('body').value.unshift(j.expressionStatement(j.identifier('bar')));
});