检查打字稿中的库文件,但不发出它们

问题描述 投票:0回答:1

我正在为一个老式的纯 PHP 项目开发一个子模块。 该项目有一个用于一些 JS 依赖项的文件夹。

为了我的理智,我在子模块中使用 Typescript,但我在如何引用依赖项并从依赖项文件夹中的库获取部分类型推断方面遇到了麻烦。

这些依赖项仅是本地的,出于兼容性原因我无法更改它,所以我不能真正使用 npm。

这是项目结构:

  • 项目根目录
    • 子模块根
      • js
      • ts
      • tsconfig.json
    • 依赖文件夹

在我的

tsconfig.json
中,我有以下选项:

{
    "compilerOptions": {
        // ...
        "allowJs": true,
        "checkJs": true,
        "rootDir": "./ts",
        "outDir": "./js",
        // ...
    },
    "include": [
        "./ts/**/*",
        "../dependencies/**/*.js"
    ],
}

这个效果非常好。 Typescript 可以解析依赖项文件夹中的类型,并将我的

./ts
文件正确编译为
./js
。唯一的问题是它不断抱怨
../dependencies
中的每个文件出现以下错误:

error TS6059: File is not under 'rootDir'. 'rootDir' is expected to contain all source files.

我尝试将“rootDir”更改为

../
。但这会导致
tsc
将所有依赖项输出到
./js
文件夹中。我不想这样。

javascript typescript dependencies tsconfig tsconfig.json
1个回答
0
投票

我有几点要给你

  • TS6059
    错误正确地表明您应该将所有源文件放在根
    dir
    下,因此您对
    rootDir
    的更改是正确的。

  • 您不应该将

    js
    依赖项放置在
    include
    数组中,因为它们已经是
    js
    文件。

  • "allowJs": true
    选项使您的
    js
    文件可编译,因此它们将始终位于输出目录中。

  • 顺便说一下,您不应该使用
  • js

    文件夹作为输出目录。在这种情况下,该目录有两个目的:

    
    

    它存储输入
      js
    • 文件
      它用作 
    • ts
    • 文件的输出目录。
      
      
  • 我建议您将
dist

目录作为输出目录而不是

js
目录。关注点分离是关键。输入目录和输出目录应该不同。
我还强烈建议您使用一些捆绑器,例如 Webpack 或 Rollup 来实现您的目标,而不是原始 ts 编译。

© www.soinside.com 2019 - 2024. All rights reserved.