【问题标题】:Typescript: Make tsconfig emit one folder but not the other folder打字稿:使 tsconfig 发出一个文件夹而不是另一个文件夹
【发布时间】:2019-05-20 05:33:46
【问题描述】:

我正在将现有项目从 js 转换为 typescript。我希望能够在一个文件夹上设置noEmit = true,但让另一个文件夹具有noEmit = false

原因是我通过 webpack 设置了我的客户端(角度)代码,并且不需要打字稿来为我生成 javascript。虽然服务器(Node/express)仍然需要生成为 javascript。

我尝试了几种不同的组合,但似乎没有找到正确的方法。

我能够开始工作的唯一解决方案是拥有两个tsconfig.json 并运行类似tsc -p src\server\tsconfig && tsc -p src\client\tsconfig 的命令

我意识到这不是一个好的解决方案,但我没有让单个 tsconfig 工作,也没有基本的 tsconfig。

这是文件夹结构..

|-Src
|--/client
|--/server

有没有办法使用单个 tsc 命令来实现这一点?还是有更好的方法来格式化项目?谢谢!!

【问题讨论】:

    标签: javascript node.js angular typescript webpack


    【解决方案1】:

    根据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,这两个配置都是从其扩展而来的。

    【讨论】:

      【解决方案2】:

      您可以使用 tsconfig.json 文件中的 exclude 属性实现您想要的。

      检查documentation 对于排除属性

      【讨论】:

      • 这将从打字稿编译器检查中排除客户端文件夹。我仍然想要那个功能,只是不让它发出
      • 我知道我认为您的解决方案被卡住了,因为您无法为每个文件/目录指定 noEmit 属性。我想你正在使用 ts-loader,如果是这样,那么你应该让编译器通过 webpack 检查并删除你的第二个命令
      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多