JS:重命名变量以进行重构(使用 AST,而不是文本)

mik*_*ana 4 javascript refactoring parsing abstract-syntax-tree

我经常需要在重构代码时重命名变量,我目前使用正则表达式以一种有点hacky的方式进行 - 由于缺乏实际结构,我最终不得不使用愚蠢的文本解决方法,例如,将“req”重命名为“request”并避免类似名称的副作用,如“需要”。

想想这些东西:这有点像用正则表达式修改 DOM:它不起作用。

我了解了 AST 和 Esprima 等代码结构修改工具。是否有重命名变量的工具,基于 Esprima 或其他?

mik*_*ana 5

1. 掌握.js

看起来http://graspjs.com/正是这样做的。

grasp selector --replace replacement file.js
Run Code Online (Sandbox Code Playgroud)

例如,将“el”重命名为“element”:

grasp '#el' --replace 'element' index.js
Run Code Online (Sandbox Code Playgroud)

官方掌握.replace 文档。

2.vscode

Visual Studio Code还包括一个真正的替换工具。只需右键单击一个令牌并选择重命名符号

在此处输入图片说明