У меня есть собственный наблюдатель TypeScript, который выглядит примерно так:
const compilerHost = typescript.createWatchCompilerHost(config.fileNames, config.options, typescript.sys, undefined, reportDiagnostic)
typescript.createWatchProgram(compilerHost)
Я хочу подключить специальный преобразователь, который используется, когда наблюдатель компилирует мои .ts
файлы. Если бы я делал одноразовую компиляцию, я бы сделал что-то вроде этого, указав в качестве последнего параметра преобразователь.
const program = typescript.createProgram(config.fileNames, config.options)
const emitResult = program.emit(undefined, undefined, undefined, undefined, { before: [ transformer(program) ] })
Однако я не могу найти способ добавить преобразователь ни к хосту компилятора, ни к созданию программы наблюдения.
Как добавить собственный преобразователь в хост компилятора часов?
Один из теоретических способов сделать это - предоставить пользовательский CreateProgram
для createWatchCompilerHost
, который имеет функцию emit
для возвращаемых объектов, переопределенных моим пользовательским преобразователем. Мне неясно, насколько реалистичным будет этот путь, и я ищу лучший вариант.