TypeScript编译器未发出导入的模块

时间:2019-04-03 11:23:15

标签: typescript configuration

我有一个项目(on GitHub),它使用TypeScript编译器的Project References功能,因此它有名为子文件夹的tsconfig.json根文件和tsconfig.json文件shared

Shared子文件夹包含2个文件:

  • User.ts
  • Point.ts

index.ts文件导入User模块,例如

import User from './shared/User';

已编译的文件位于target文件夹下。我遇到的问题是,由于tsctarget文件夹包含Point .d.ts和.js文件(未导入,{{1} }),包含index.ts文件(由User导入)。

index.ts的输出:

tsc -b --listEmittedFiles

如果我从TSFILE: /home/user/Projects/test/target/index.js TSFILE: /home/user/Projects/test/target/index.d.ts TSFILE: /home/user/Projects/test/target/shared/Point.js TSFILE: /home/user/Projects/test/target/shared/Point.d.ts TSFILE: /home/user/Projects/test/target/shared/User.js TSFILE: /home/user/Projects/test/target/shared/User.d.ts 中删除了import表达式,则目标文件夹将同时具有index.tsUser脚本。

我的问题是:是Point的bug还是我做错了?

tsc的{​​{1}}和3.3版本上进行了测试,结果相同。

3.4

tsc

tsconfig.json文件夹中的{ "compilerOptions": { "target": "es5", "module": "commonjs", "declaration": true, "outDir": "./target", "rootDir": "./source", "strict": true, "esModuleInterop": true }, "references": [ { "path": "./source/shared" } ] }

tsconfig.json

1 个答案:

答案 0 :(得分:1)

最后,我自己找到了解决方案!

子项目

tscconfig.json文件应将输出指向主项目的target/目录!

因此,假设您有一个常规项目,其中source/目录定义为rootDir,而target/目录定义为outDir

source目录中,有两个子项目:coregeometry(如here所示)。

因此,他们两个都应将outDir设置到主target/目录中,例如:../../target/core../../target/geometry

,使用configuration inheritance with "extends" property。在这种情况下,子项目的配置文件可以这样重写(example):

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "composite": true
  }
}