jscodeshift 是一个用于在多 JS 文件运行 codemod 的工具包,它提供:
一个 runner,它可在每个传递给它的文件之间提供转换,还能输出转换文件的数量。
recast 的包装,提供不同的 API。Recast 是一个 AST-to-AST 转换工具,并且会尽可能地保护代码的原有风格。
示例代码:
// Adding a method to all Identifiers jscodeshift.registerMethods({ logNames: function() { return this.forEach(function(path) { console.log(path.node.name); }); } }, jscodeshift.Identifier); // Adding a method to all collectionsjscodeshift.registerMethods({ findIdentifiers: function() { return this.find(jscodeshift.Identifier); } }); jscodeshift(ast).findIdentifiers().logNames(); jscodeshift(ast).logNames(); // error, unless `ast` only consists of Identifier nodes