打字稿:让tsconfig发出一个文件夹,但不发出另一个文件夹

时间:2018-12-19 17:08:06

标签: javascript node.js angular typescript webpack

我正在将现有项目从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命令来实现?还是有更好的方法格式化项目?谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用tsconfig.json文件中的exclude属性来实现所需的功能。

检查documentation 排除属性

答案 1 :(得分:0)

根据this answerthis 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