如何从`tsconfig.json`

时间:2018-12-16 17:09:19

标签: typescript api transform

我正在使用Typescript编译器API。初始化程序时,要求我提供一个CompilerOptions对象。我想对给定的CompilerOptions文件使用tsconfig.json,但似乎无法弄清楚正确的方法。

我认为我应该使用parseJsonConfigFileContent,但这也需要一个ParseConfigHostThey say可以很容易地实现自己,但是特别是方法readDirectory似乎很难实现。据我所知,您需要返回某个目录中的所有Typescript文件,分别占excludesincludes

当然,Typescript已经在内部某个位置完成了此操作。如何使用默认的readDirectoryParseConfigHost

换句话说:为给定的Typescript项目获取CompilerOptions的最简单方法是什么?

3 个答案:

答案 0 :(得分:1)

使用以下代码,我可以轻松地阅读编译器选项。

我尚不清楚这是否有任何限制,但它似乎可以正常工作,并且仅使用Typescript本身提供的功能:

const parseConfigHost: ts.ParseConfigHost = {
  fileExists: ts.sys.fileExists,
  readFile: ts.sys.readFile,
  readDirectory: ts.sys.readDirectory,
  useCaseSensitiveFileNames: true
};

const configFileName = ts.findConfigFile(
  "./",
  ts.sys.fileExists,
  "tsconfig.json"
);
const configFile = ts.readConfigFile(configFileName, ts.sys.readFile);
const compilerOptions = ts.parseJsonConfigFileContent(
  configFile.config,
  parseConfigHost,
  "./"
);

答案 1 :(得分:0)

根据我的经验,通过任何CompilerOptions非常的错误。您将损失大量时间。我所做的就是将一个空对象传递为CompilerOptions。这足以获取诊断信息或AST或您需要的任何东西。除非您需要实际以编程方式进行编译。

尽管如此,IIRC,我曾经设法通过仅使用JSON.encode(fs.readFileSync('./tsconfig.json'))读取tsconfig.json来传递编译器选项。

答案 2 :(得分:0)

如果您手头有tsconfig.json的内容,则可以轻松使用convertCompilerOptionsFromJson

例如:

const compilerOptions = ts.convertCompilerOptionsFromJson({ module: 'commonjs', outDir: 'dist' }, '.');
console.log(compilerOptions);

您将获得以下输出:

{ options: { module: 1, outDir: 'dist' }, errors: [] }