当tsconfig中不包含测试/**时,Vscode TS语言功能不可用 [英] Vscode TS language features unavailable when tests/** are not included in the tsconfig
本文介绍了当tsconfig中不包含测试/**时,Vscode TS语言功能不可用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
test
文件夹与src
文件夹相邻时,我的打字脚本测试能够接收linting、代码完成、vscode IntelliSense(ts语言功能)。我不希望在生成TypeScrip项目时转换测试。
我的打字脚本节点项目的结构如下:
.
├── server
│ │
│ │
│ ├── src
│ │ │
│ │ └── app.ts
│ ├── test
│ │ │
│ │ └── app.test.ts
│ ├── node_modules/
│ ├── package-lock.json
│ ├── package.json
│ ├── tslint.json
│ └── tsconfig.json
├── front_end/
└── README.md
使用我的tsconfig:
{
"compilerOptions": {
"baseUrl": ".",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist",
"sourceMap": true,
"strict": true,
"target": "ESNext",
"paths": {
"*": ["node_modules/*"]
}
},
"include": ["src/**/*"]
}
当我在vscode中导航到我的测试文件时,vscode语言特性无法识别安装在node_MODULES中的类型和包。令人惊讶的是,如果我只在服务器文件夹中打开vscode(正如您从我的文件夹结构中看到的那样,服务器不是根目录),语言功能就会工作🧐。
测试使用ts-jest
运行,因此这里不需要tsc
。为测试🤔扩展tsconfig.json
是不是更好的做法?
这是可以在设置中修复的问题,还是应该向https://github.com/microsoft/vscode/issues/new/choose提交错误。
推荐答案
Vscode的单根TSCONFIG文件有问题。与src
相邻的test
文件夹将使用tsconfig(添加在此pull request中),但如果您打开的文件夹比它高一个目录(例如,如果您有服务器和客户端文件夹),则该文件夹将不起作用。正在跟踪此问题的解决方案:https://github.com/Microsoft/vscode/issues/12463。
简单的解决方案是使用两个额外的tsconfig
。一个用于Lintertsconfig.eslint.json
,另一个用于测试test
文件夹:test/tsconfig.json
包含以下内容:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"noEmit": true
},
"include": ["./**/*"]
}
不优雅,但目前没有更好的解决方案。
这篇关于当tsconfig中不包含测试/**时,Vscode TS语言功能不可用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文