【发布时间】:2022-06-17 03:10:14
【问题描述】:
我正在使用 VSCode 并尝试将导入在我的项目中的多个文件中写入的方式更正为更高性能的格式 - VSCode 是否具有可以促进这一点的功能?可以通过内置的查找和替换来完成吗?还是其他 VSCode 功能可以做到这一点?
我得到的导入看起来像这样(substance-ux 是真实模块名称的混淆版本,因为我不想要模块特定的答案):
import { Foo, Bar as BarBar } from '@substance-ux/glyphs';
或许:
import {
GlyphWithLongName as LongName,
GlyphWithExtraLongName as ExtraLong
} from '@substance-ux/glyphs';
我需要将它转换成这种风格,匹配我们项目中其他地方的导入:
import Foo from '@substance-ux/glyphs/Foo';
import BarBar from '@substance-ux/glyphs/Bar';
或者这个:
import LongName from '@substance-ux/glyphs/GlyphWithLongName';
import ExtraLong from '@substance-ux/glyphs/GlyphWithExtraLongName';
(顺便说一句,'@substance-ux/glyphs/GlyphWithExtraLongName' 之类的文件已经存在,并且包的文档说 @substance-ux/glyphs 模块在导入时会运行大量代码,这会减慢开发构建速度。)
现在,如果我知道我有一种或另一种格式,或者我知道有多少,那么我可以依靠查找和替换,例如我可以使用一些正则表达式(查找:import \{ (.*), (.*) } from '(@substance-ux/glyphs)'; 替换 import $1 from '$3/$1';\nimport $2 from '$3/$2';)和 Find and Replace feature in VSCode。
但是,如果我有可变数量的导入,或者混合样式(有些'as'有些不是),如果我尝试一次性完成此操作,我就会完全陷入困境。
我知道snippets 可以使用 TextMate 语法进行正则表达式捕获和一些巧妙的替换,但我认为他们不能处理可变数量的捕获组?或者他们可以吗?
在没有扩展等的 VSCode 中这可能吗?
【问题讨论】:
-
片段可以处理可变数量的参数 - 我已经回答了一些 SO 问题表明 - 但我认为它们不适用于您的格式。我真的认为您的情况没有非扩展或非脚本解决方案。如果您对此感兴趣,我有一个非常简洁的扩展解决方案。
-
@mark 是,但最好作为答案,这样可以接受它
标签: javascript regex visual-studio-code