项目全局重构:将Ramda的ES6全局导入改为命名导入
当然可以!我之前在项目里也干过一模一样的事,从全局导入Ramda改成命名导入,下面给你整理几种亲测靠谱的批量重构方法,不管用IDE还是脚本都能搞定:
一、VS Code 批量重构(最省心的方式)
VS Code的快速修复+正则替换组合起来简直绝了,步骤超简单:
- 先替换所有
R.xxx调用:按下Ctrl+Shift+F打开全局查找替换,勾选右上角的「正则表达式」按钮:- 查找框输入:
R\.(\w+) - 替换框输入:
$1 - 点击「替换全部」,所有
R.identity(1)就变成identity(1)了
- 查找框输入:
- 自动补全命名导入:此时VS Code会在所有用到Ramda方法的地方标红(提示未导入),按下
Ctrl+Shift+P打开命令面板,输入「Fix all auto-fixable problems」并执行,VS Code会自动把原来的import * as R from 'ramda'替换成包含所有用到的方法的命名导入,比如import { identity, map, filter } from 'ramda'
二、WebStorm/IntelliJ 批量重构(最智能的方式)
WebStorm的重构功能本来就强,对付这种场景完全不在话下,有两种方式:
- 方式一:一键转换命名空间导入
- 打开「Settings/Preferences」→「Editor」→「Code Style」→「JavaScript/TypeScript」→「Imports」
- 勾选「Convert namespace imports to named imports」选项,然后点击「Apply」
- 按下
Ctrl+Alt+O执行「Optimize Imports」,WebStorm会自动完成两件事:把全局导入改成只包含用到的方法的命名导入,同时把所有R.xxx调用改成直接调用xxx
- 方式二:结构化查找替换(SSR)
如果需要更精准的控制,可以用WebStorm的SSR功能:- 按下
Ctrl+Shift+R打开结构化查找替换面板 - 查找模式输入:
R.$method$($args$) - 替换模式输入:
$method$($args$) - 点击「Find」确认匹配无误后,点击「Replace All」,再手动优化导入即可
- 按下
三、Bash脚本批量处理(适合无IDE的场景)
如果是在服务器或者没有IDE的环境下,可以用sed+grep组合脚本搞定,不过要注意先备份代码:
- 收集所有用到的Ramda方法:
grep -roh "R\.\w+" ./src | sed 's/R\.//g' | sort | uniq > ramda-methods.txt - 替换全局导入为命名导入(Mac系统注意sed的
-i参数需要加空字符串,Linux可以去掉):sed -i '' "s/import \* as R from 'ramda'/import { $(paste -sd ', ' ramda-methods.txt) } from 'ramda'/" ./src/**/*.js - 替换所有
R.xxx调用:sed -i '' 's/R\.\(\w+\)/\1/g' ./src/**/*.js
⚠️ 注意:脚本可能会误匹配字符串中的R.xxx(比如console.log("R.identity")),所以执行前最好先检查匹配结果
内容的提问来源于stack exchange,提问作者stpoa
相关产品推荐
相关产品推荐

