Tsconfig配置疑问:outDir设为./时无输出,求原因
问题原因与解决办法
这是TypeScript编译器的安全机制导致的:当你设置"outDir": "./"时,编译器会判定输出目录(当前根目录)包含了源码目录src,为了避免编译后的文件污染源码目录、或者出现文件覆盖/循环引用的风险,TSC会静默跳过编译操作,因此没有任何输出文件生成。
而当你设置"outDir": ""时,TSC对空字符串的路径解析逻辑和./不同——它会直接将编译产物输出到当前根目录,且不会触发上述的安全检查,因此能正常生效。
解决方法
- 直接使用
"outDir": ""来实现输出到根目录的需求,这是TSC官方认可的有效写法。 - 若一定要显式指定当前目录,可在
tsconfig.json中添加"allowJs": false(确保源码目录只有TS文件,避免和编译后的JS文件冲突),再配合"outDir": "./",不过这种方式不如空字符串写法稳妥。
你也可以运行tsc --verbose查看详细编译日志,能直观看到编译器跳过输出的具体原因:
tsc --verbose
内容的提问来源于stack exchange,提问作者GodAmongUs
相关产品推荐
相关产品推荐

