Вы можете сделать следующее:
- Разобрать все исходные файлы, используя
ts.createSourceFile
- создать AST / ts.SourceFile
для каждого файла.
- Преобразуйте каждый исходный файл, используя
ts.transform
. Предоставьте это с вашими преобразованиями для использования.
- Используйте
ts.createPrinter
для создания принтера и распечатки преобразованных исходных файлов.
- Записать распечатанные исходные файлы в файловую систему.
Пример кода приведен в моем ответе здесь .
Alternative
Важным моментом, который следует отметить относительно вышеупомянутого решения, является то, что когда принтер печатает AST, он по большей части будет печатать его с учетом собственного форматирования.
Если вы хотите сохранить форматирование в файлах, вы можете вместо этого сделать следующее:
- Разобрать все исходные файлы в AST (так же, как # 1 выше).
- Пройдите по всем AST и создайте коллекцию текстовых изменений файла для выполнения в файлах. Пример структуры данных, которую вы, возможно, захотите создать, может быть аналогичен структуре, найденной в API компилятора -
FileTextChanges
.
- Манипулировать текстом непосредственно на основе этих изменений файла текста.
- Сохранить текст для каждого файла в файловой системе.
Альтернатива 2
Поскольку вы будете выполнять это только один раз на базе кода, вы, вероятно, сэкономите много времени, используя вместо этого мою библиотеку ts-morph .