而不是相对路径,例如从’../Foo’导入Foo,当你有一个更大的项目时,它会变得毛茸茸,我们已经开始使用“绝对”路径,例如从’〜/ utils / Foo’导入Foo,其中〜映射到我们的根JS目录(比如assets / js或者什么不是).
这似乎打破了vscode的控制点击导航,我怀疑它所做的所有自动/隐式推理,因为它从根本上无法遵循import语句.
有没有办法将〜映射到vscode中的特定文件夹/子文件夹,以便这可以再次使用?
(理想情况下,我们可以有多个映射,例如,一个用于我们在src / main / js中生成JS代码,一个用于我们的测试JS代码,例如在src / test / js中.)
最佳答案 我不认为这是纯
JavaScript项目所支持的,但它支持Typescript项目(我将详细介绍一种可用于为JS项目启用它的解决方法).如果您希望更好地支持此类功能,我建议您使用
open a feature request.
要在TypeScript项目中启用此功能,请在项目的根目录中创建tsconfig.json文件:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"~/*": [
"assets/js/*"
]
}
}
}
paths是您想要的映射. Here’s more information about mappings.
现在任何形式的导入:
import Foo from '~/utils/Foo'
将被解决
import Foo from 'assets/js/utils/Foo'
默认情况下,这仅适用于TypeScript文件,但您也可以通过在tsconfig.json中添加“allowJs”:true来在JS文件中启用它,如下所示:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"~/*": [
"assets/js/*"
]
},
"allowJs": true
}
}
这应该为项目中的JavaScript文件启用相同的智能感知功能.
在JavaScript的情况下,请记住路径配置仅用于工具支持.它不会改变代码的运行时行为,因此您仍然必须确保运行时可以正确地解析模块路径’〜/ utils / Foo’.
如果您希望更好地支持此方案,或者对如何改进这些方案有任何想法,请再次考虑针对VSCode打开功能请求.