我正在使用Typescript编译器API。初始化程序时,要求我提供一个CompilerOptions
对象。我想对给定的CompilerOptions
文件使用tsconfig.json
,但似乎无法弄清楚正确的方法。
我认为我应该使用parseJsonConfigFileContent
,但这也需要一个ParseConfigHost
。 They say可以很容易地实现自己,但是特别是方法readDirectory
似乎很难实现。据我所知,您需要返回某个目录中的所有Typescript文件,分别占excludes
和includes
。
当然,Typescript已经在内部某个位置完成了此操作。如何使用默认的readDirectory
或ParseConfigHost
?
换句话说:为给定的Typescript项目获取CompilerOptions
的最简单方法是什么?
答案 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: [] }