我的文件夹结构是这样的:
root
|-- app1
|-- node_modules
|-- tsconfig.json
|-- ts
|-- app2
|-- node_modules
|-- tsconfig.json
|-- ts
|-- shared
|-- ts
|-- typings
|-- missing-definitions.d.ts
|-- tsconfig.json
app1
和app2
都是具有单独依赖关系和构建的独立应用,但它们通过shared
之类的操作访问include SharedFile from '../../shared/ts/SharedFile';
的几个文件。它们还包括missing-definitions.d.ts
,它定义了一些没有@types
的模块。 shared
包含共享代码,但它本身不是可构建的应用程序。
构建应用时,tsc
效果很好,不会出现任何错误/警告。 vscode似乎也在app1
和app2
文件中正常工作。我在vscode中打开共享文件时遇到问题。 vscode似乎无法找到missing-definitions.d.ts
中定义的模块的定义,也无法找到完全存在于其他应用程序@types
中的模块,尽管shared/tsconfig.json
文件指向这些目录。
我的问题是 - 如何在每个文件夹中设置tsconfig.json
以使vscode正常工作?我对是否应该在每个配置中使用baseUrl
,paths
,typeRoots
和/或include
感到困惑。
以下是app1/tsconfig.json
的内容:
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"baseUrl": ".",
"paths": {
"*" : [
"node_modules/*",
"node_modules/@types/*"
]
}
},
"include": [
"./ts/**/*.ts",
"../shared/typings/**/*.d.ts"
]
}
无论我为shared/tsconfig.json
设置什么,似乎vscode都不会读取/解析它。
答案 0 :(得分:0)
我正在使用npm
和npm link
,我使用symlink自动处理我的嵌套依赖项。您不必实际使用 npm
,除了使用它来管理您的local dependencies。
如果你对这种方法没问题(至少有点熟悉npm
),你可以:
tsconfig.json
文件)shared
local dependency添加到app1
和app2
下的package.json,例如:"name": "app1",
"dependencies": {
"shared": "File:../shared"
}
root
文件夹执行:symlink ./ --execute
moduleResolution
文件"node"
设置为tsconfig.json
醇>
这会自动且几乎立即将shared
与app1
和app2
同步。如果不需要,那么npm link
或符号链接都不是,您只需在两个应用文件夹中运行npm install
。
注意:如果从符号链接中省略
--execute
,则可以看到命令列表而不执行它们。