javascript - TypeScript 编译器 api : get position in generated code of a specific AST node

标签 javascript typescript compilation

我的目标是获取发出的 (JavaScript) 文件中特定 TypeScript AST 节点的位置(开始和结束)。

以这段代码为例:

const program = ts.createProgram(tsconfig.fileNames, tsconfig.options);
const aNode = program.getSourceFiles()[0].getChildAt(1);
const emittedFiles = [];
program.emit(/*targetSourceFile */undefined, /*writeFile*/ (fileName, content) => emittedFiles.push({ fileName, content }));

如何获取由 aNode 表示的发出代码的位置?

我现在尝试的方法是捕获源映射文件并使用 https://npmjs.org/package/source-map 对位置进行逆向工程。 .然而,源 map 文件只给我一个位置的估计。

有什么方法可以使用源映射文件对确切位置进行逆向工程,或者在发射阶段将节点写入 JavaScript 输出时拦截确切位置?

最佳答案

我认为我所寻找的是不可能的。我最终制作了源 map 并使用这些 map 使用 https://github.com/mozilla/source-map 计算原始位置

关于javascript - TypeScript 编译器 api : get position in generated code of a specific AST node,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45707191/

相关文章:

c - gcc静态库编译

Javascript 通配符正则表达式搜索给出不一致的结果

javascript - 如何获取 eloqua 表单下方复选框的错误消息

typescript - TypeScript 这种类型的用途是什么?

angular - 如何在 angular-cli 上使用外部库? (pdf制作)

c++ - Visual Studio 2012 编译时间慢

c++ - 使用 cmake 构建我的 C++ 项目的正确方法?

JavaScript 模块模式和 this

javascript - 为什么对象解构不起作用?

javascript - 在 Vue 项目中使 axios 全局化不起作用