我有一个项目,需要从中构建两种不同的产品。说我有
./src/advanced
./src/basic
所有代码都是用Typescript编写的,因此我需要使用tsc
因此,我创建了3个 tsconfig 文件
tsconfig-base.json
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"noImplicitAny": false,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es6",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./src",
"lib": ["es2018", "dom", "dom", "dom.iterable", "es6"],
"importHelpers": true,
},
"exclude": ["node_modules", "**/*.spec.ts","dist"]
现在要构建我拥有的basic
产品
tsconfig-basic.json
{
"extends": "./tsconfig-base.json",
"compilerOptions": {
"noEmitHelpers": true
},
"files": [
"basic/main.ts"
]
}
我编译如下
$> tsc -p ./tsconfig-basic.json
现在我有2个问题
1)找不到文件basic/main.ts
,它在./basic/main.ts
中却在./src/basic/main.ts
中查找。为什么不baseUrl
开头?
2)如果固定了(1),则不会将编译后的文件写入./dist
。为什么此处未使用基本文件中的"outDir": "./dist
?当我将outDir
添加到 tsconfig-basic.json 时,它会按预期工作
无论如何,在这里扩展似乎无效,或者工作方式与我预期的不同。有什么建议可以改善我的设置吗?
答案 0 :(得分:1)
1)baseUrl
仅用于与webpack等捆绑程序一起使用。查看有关TypeScript/10866
2)不幸的是,这是设计使然。参见问题TypeScript/29172
引用Wesley Wigham(Microsoft员工):
基于路径的编译器选项(outDir,outFile,rootDir,include,文件)从它们所在的配置文件中解决)
您需要为每个outDir
文件重复tsconfig.json
。
答案 1 :(得分:1)
但是有一个窍门。如果您从相关目录中创建到基本Tsconfig文件的符号链接,并扩展符号链接版本而不是原始版本,则所有路径都将根据您的期望进行解析。