我是使用波浪号的 Vue.js 项目的新成员 (~
) 模块导入中的符号,如
import WhateverApi from '~/api/whatever';
项目存储库包含所有类型的文件:Vagrant 机器、Laravel 后端应用程序、配置文件和 Vue.js SPA。后者位于嵌套文件夹结构中(resources/assets/js/
),它应该被解释为项目根,因此~
.
使用 Vim,我习惯于能够通过以下方式跳转到链接文件gf
。当我在上面显示的路径上执行此操作时,Vim 抱怨该文件不存在,因为它可能将波浪号(某种程度上正确)解释为用户的主文件夹。
谷歌搜索没有结果,主要是因为我不知道到底要搜索什么。这似乎是 Webpack 正在做的一些魔法。由于其他团队成员使用WebStorm/PHPStorm,因此没有这个问题。
如何让 Vim 在项目范围内正确解析路径?
更新一个例子:
Webpack 有一个别名设置,允许将任何路径定义为在源代码文件中使用的别名。它看起来像这样:
resolve: {
alias: {
vue$: 'vue/dist/vue.esm.js',
'~': path.resolve(__dirname, 'resources/assets/js'),
sass: path.resolve(__dirname, 'resources/assets/sass'),
},
extensions: ['*', '.js', '.vue', '.json'],
},
忽略$vue
关键,它特定于带有 Webpack 的 Vue.js。~
and sass
很有趣。第一个基本上是一个替代过滤器,可以交换每个过滤器~
在路径中resources/assets/js
。同样对于sass
与它相应的路径。然而,进口声明有所不同。下面是一个 Vue 单文件组件的示例,其中包含两个 import 语句:
<template>
<div>
<p>Some content.</p>
</div>
</template>
<script>
import WhateverApi from '~/api/whatever';
export default {};
</script>
<style lang="scss" scoped>
@import '~sass/variables/all';
</style>
现在,当使用gf
,如果它能够根据以下规则解决这些(奇怪的)组合,那就太棒了:
- 路径开头为
~/
应该取代~
to resources/assets/js
并尝试通过附加扩展名来查找文件.js
, .vue
and .json
.
- 路径开头为
~sass
应该取代~
to resources/assets/sass
并尝试通过附加扩展名来查找文件.scss
.
我知道这涉及到——并且发生在我加入团队之前。有一个有趣的项目试图简化这个(https://github.com/davidosomething/vim-enhanced-resolver https://github.com/davidosomething/vim-enhanced-resolver)但不幸的是它似乎被破坏了,因为它在尝试解析现有路径时抛出错误。
任何帮助是极大的赞赏。