我有一个(想要的)结构,如下所示:

- tsconfig.json
- src
    - app.ts
- tests
    - appTest.ts
    - appTest.js
- dist
    - app.js

如果没有tests文件夹,则像这样的tsconfig.json可以正常工作:
{
    "compilerOptions": {
        "outDir":"dist"
    },
    "include" :[
        "src/**/*.ts"
    ]
}

但是,如果我将tests/**/*.ts添加到include元素,它也会将我的测试文件编译为dist并更改其文件夹结构(可以理解,但不希望如此)。

我可以告诉TypeScript编译器在项目中包括测试文件以支持诸如重构之类的事情,但将它们从输出省略为dist吗?具体来说,我希望按照上述结构中的建议,将.js编译在tests目录中。

最佳答案

完全分离测试如何?
就像是:

- scripts
    - tsconfig.json
    - src
        - app.ts
    - dist
        - app.js
- tests
    - tsconfig.json
    - src
        - appTest.ts
    - bin
        - appTest.js

然后scripts/tsconfig.json将如下所示:
"compilerOptions": {
    "outDir": "dist",
    "rootDir": "src",
    ...
}
tests/tsconfig.json看起来像:
"compilerOptions": {
    "outDir": "bin",
    "rootDir": "src",
    ...
}

编辑

我在webstorm中检查了此解决方案,有两种选择:

(1)测试从scripts/dist导入的文件:
scripts/tsconfig.json:
"compilerOptions": {
    "outDir": "dist",
    "rootDir": "src",
    "declaration": true
}
tests/tsconfig.json:
"compilerOptions": {
    "outDir": "bin",
    "rootDir": "src"
}
tests/src/apptest.ts:
import * as app from "../../scripts/dist/app";

...

结果tests/bin将如下所示:
- tests
    - bin
        - apptest.js

而且,当您重构scripts时,假设scripts/src/app.ts确实对tests/src/apptest.ts没有影响,但是由于源中的重构,它的编译将失败。
因此,您将知道需要更改测试文件(尽管它不是自动的)。

(2)测试从scripts/src导入的文件:
scripts/tsconfig.json文件不需要启用declaration选项,因为我们将直接使用源代码。
tests/src/apptest.ts:
import * as app from "../../scripts/dist/src";

...

重构源将根据需要更改测试文件,但是tests/bin中的输出是这样的:
- tests
    - bin
        - scripts
            - src
                - app.js
        - tests
            - src
                - apptest.js

如果您不介意tests/bin的此结构,则无需使用其他工具即可获得所需的内容。

关于typescript - tsconfig.json用于 `src`和 `tests`的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40324229/

10-13 04:53