我正在将现有项目从js转换为打字稿。我希望能够在一个文件夹上设置noEmit = true
,但让另一个文件夹具有noEmit = false
。
原因是我通过webpack设置了我的client(角度)代码,不需要打字稿为我生成javascript。尽管仍然需要将服务器(节点/表达式)生成为javascript。
我尝试了几种不同的组合,但似乎还没有找到正确的方法。
我唯一能够上班的解决方案是拥有两个tsconfig.json
并运行类似tsc -p src\server\tsconfig && tsc -p src\client\tsconfig
的命令
我意识到这不是一个好的解决方案,但是我没有一个tsconfig可以工作,也没有一个基本的tsconfig。
这是文件夹结构。
|-Src
|--/client
|--/server
是否有一种方法可以使用单个tsc命令来实现?还是有更好的方法格式化项目?谢谢!
答案 0 :(得分:2)
您可以使用tsconfig.json文件中的exclude属性来实现所需的功能。
检查documentation 排除属性
答案 1 :(得分:0)
根据this answer和this comment,除了您已经拥有多个tsconfig.json文件之外,我认为没有其他解决方案。
您可以通过使用tsconfig.json
进行编译以及在package.json中使用单独的tsconfig-build.json
进行构建来简化此过程,即:
// package.json
{
"scripts": {
"build": "tsc -p tsconfig-build.json"
},
// ...
}
通过此设置(假设使用默认的tsconfig.json is in your root),从命令行运行tsc
将使用默认的tsconfig.json,但是运行npm run build
将使用tsconfig-build .json。您也可以使用one tsconfig extend from another,因此,如果您有很多共同点,可以添加两个配置从其扩展的tsconfig-base.json
。