Как получить `CompilerOptions` из` tsconfig.json` - PullRequest
0 голосов
/ 16 декабря 2018

Я работаю с API компилятора Typescript.При инициализации программы меня просят указать объект CompilerOptions.Я хочу использовать CompilerOptions для данного tsconfig.json файла, но не могу понять, как правильно его получить.

Я думаю, что должен использовать parseJsonConfigFileContent но это также нуждается в ParseConfigHost. Они говорят , что это легко реализовать самостоятельно, но, в частности, метод readDirectory кажется довольно сложным для реализации самостоятельно.Насколько я вижу, вам нужно вернуть все файлы Typescript в определенном каталоге, учитывая excludes и includes.

Конечно, Typescript уже делает это где-то внутри.Как я могу использовать значение по умолчанию readDirectory или ParseConfigHost?

По-другому: какой самый простой способ получить CompilerOptions для данного проекта Typescript?

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

С помощью следующего кода я смог легко прочитать параметры компилятора.

Я пока не знаю, есть ли у него какие-либо ограничения, но, похоже, он работает нормально и использует только то, что обеспечивает сам 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,
  "./"
);
0 голосов
/ 17 декабря 2018

По моему опыту, прохождение любого CompilerOptions является очень глючным.Вы потеряете тонну своего времени.То, что я сделал, передавало пустой объект как CompilerOptions.И этого вполне достаточно, чтобы получить диагностику или АСТ или все, что вам нужно.Если вам не нужно фактически компилировать программно.

Тем не менее, IIRC, мне однажды удалось передать параметры моего компилятора, просто прочитав tsconfig.json с JSON.encode(fs.readFileSync('./tsconfig.json'))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...