我正在将现有项目从JS转换为打字稿。我希望能够将noEmit = true
设置在一个文件夹上,但另一个文件夹具有noEmit = false
。
原因是我通过WebPack设置了我的客户端(Angular)代码,并且不需要打字稿即可为我生成JavaScript。当服务器(节点/express)仍然需要生成JavaScript。
我尝试了几种不同的组合,但似乎没有找到正确的方法。
我唯一能够上班的解决方案是有两个tsconfig.json
并运行一个命令,例如tsc -p srcservertsconfig && tsc -p srcclienttsconfig
我意识到这不是一个好的解决方案,但是我没有得到一个tsconfig来工作,也没有基本的tsconfig。
这是文件夹结构。
|-Src
|--/client
|--/server
有没有一种方法可以使用单个TSC命令来实现此目的?还是我应该格式化项目的更好方法?谢谢!
我认为除了您已经在做的多个tsconfig.json文件之外,还有其他解决方案,按照此答案和此评论。
您可以通过在包装中使用的tsconfig.json
和单独的tsconfig-build.json
来使其更简化。
// package.json
{
"scripts": {
"build": "tsc -p tsconfig-build.json"
},
// ...
}
使用此设置(假设默认的tsconfig.json在您的根中),从命令行中运行tsc
将使用默认的tsconfig.json,但是运行npm run build
将使用tsconfig-build.json。您也可以让一个tsconfig从另一个tsconfig延伸,因此,如果您有很多共同的选项,则可以添加两种配置的tsconfig-base.json
。
您可能可以通过tsconfig.json文件中的排除属性来实现所需的目标。
检查文档对于排除属性