我遇到了同样的问题,Matt Bierner 的回答让我找到了正确的解决方案。
问题
我有这个项目布局:
./lib/
./src/
./tests/
./tsconfig.json
在我的 tsconfig 中,我有:
{
"compilerOptions": {
...
"outDir": "./lib",
"typeRoots": ["./node_modules/@types"]
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}
是测试被排除在外,即"**/*.spec.ts",它阻止了 vscode 在测试中建议导入。
很明显,当它被删除时,当构建运行时,测试将在我的./lib 输出目录中结束。
我发现了一个更好的解决方案来解决这两个问题。
解决方案
我将tsconfig.json拆分如下:
./lib/
./src/
./src/tsconfig.json
./tests/
./tsconfig.base.json
./tsconfig.json
./package.json
./tsconfig.base.json 文件:
{
"compilerOptions": {
...
"outDir": "./lib",
"typeRoots": ["./node_modules/@types"]
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}
./tsconfig.json 文件:
{
"extends": "./tsconfig.base.json"
}
./src/tsconfig.json 文件:
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"outDir": "../lib"
},
"exclude": ["node_modules", "lib", "**/*.spec.ts"]
}
修改了构建脚本,使其可以使用./src/tsconfig.json 文件,这需要添加-p ./src/ 部分,如下例所示。
./package.json 文件:
{
...
"scripts": {
...
"build": "tsc -p ./src/"
...
}
...
}
我希望这对遇到同样问题的人有所帮助。