重构所有 Vue 组件导入以附加 .vue 扩展名

Dou*_*ell 5 javascript refactoring vue.js visual-studio-code es6-modules

Vue CLI 正在放弃对无扩展导入的支持,并且 VS Code 扩展(例如 Vetur)支持的各种功能不适用于无扩展导入。

我需要修改从.vue文件导入的每个默认组件,以将扩展名附加到整个代码库。由于文件数量较多,这不可能手动完成,需要一些自动化方法。

例子:

转动:

import Baz from '@/components/Baz'
import Thing from './LocalThing'
import OtherThing from '../../OtherThing'
Run Code Online (Sandbox Code Playgroud)

进入:

import Baz from '@/components/Baz.vue'
import Thing from './LocalThing.vue'
import OtherThing from '../../OtherThing.vue'
Run Code Online (Sandbox Code Playgroud)

如何才能实现这一目标?

rio*_*oV8 3

正则表达式 查找 替换为

寻找

^import (.*?)(?<!\.vue)'$
Run Code Online (Sandbox Code Playgroud)

代替

import $1.vue'
Run Code Online (Sandbox Code Playgroud)

不要替换已经完成的。

它应该适用于在文件中查找/替换。

编辑

然后你必须根据以结尾的文件名构造一个正则表达式.vue

find . -name "*.vue"
Run Code Online (Sandbox Code Playgroud)

然后使用文件基名构造一个正则表达式:

find . -name "*.vue"
Run Code Online (Sandbox Code Playgroud)

  • 并非项目中的每个导入都从“vue”组件文件导入......这就是为什么这很棘手。有大量来自包和其他 js 和 ts 文件的导入始终存在。我只需要对以“.vue”结尾的文件进行导入,这意味着正则表达式全局搜索将无法工作,除非它可以执行模块解析并读取导入的文件名/位置? (2认同)