我试图构建一个代码生成器,它将现有的模板文件Map到相关的类文件。它们都来自一个模块,但我不知道如何读取该模块中的类/模块列表。我基本上需要做什么intellisense正在做的阅读模块信息。如何通过代码在模块中获取此信息?
gr8qqesn1#
我试图构建一个代码生成器,它将现有的模板文件Map到相关的类文件。它们都来自一个模块,但我不知道如何读取该模块中的类/模块列表。我基本上需要做什么intellisense正在做的阅读模块信息。如何通过代码在模块中获取此信息?这完全取决于您要做什么,但是您可能希望使用一个生成抽象语法树(AST)的库,如espree。这个问题对我来说有点不清楚。虽然很明显,您希望能够以编程方式读取模块的内容,但不清楚您是否希望检索函数签名、源代码、仅构造函数列表或其他内容。您可以使用Object.keys(module)获取模块上每个属性的数组(尽管有一些限制)。您可以通过检查typeof module.property === 'function'来查看哪些属性是函数。当然,您可以通过编程方式获得更多信息,例如通过在函数上运行.toString()来获得函数的源代码。但是有很多事情可能会出错。所以我会重复我开始的内容:您可能希望使用一个生成抽象语法树(AST)的库,如espree,而不是尝试自己实现它。
espree
Object.keys(module)
typeof module.property === 'function'
.toString()
1条答案
按热度按时间gr8qqesn1#
我试图构建一个代码生成器,它将现有的模板文件Map到相关的类文件。它们都来自一个模块,但我不知道如何读取该模块中的类/模块列表。
我基本上需要做什么intellisense正在做的阅读模块信息。
如何通过代码在模块中获取此信息?
这完全取决于您要做什么,但是您可能希望使用一个生成抽象语法树(AST)的库,如
espree
。这个问题对我来说有点不清楚。虽然很明显,您希望能够以编程方式读取模块的内容,但不清楚您是否希望检索函数签名、源代码、仅构造函数列表或其他内容。
您可以使用
Object.keys(module)
获取模块上每个属性的数组(尽管有一些限制)。您可以通过检查typeof module.property === 'function'
来查看哪些属性是函数。当然,您可以通过编程方式获得更多信息,例如通过在函数上运行
.toString()
来获得函数的源代码。但是有很多事情可能会出错。所以我会重复我开始的内容:您可能希望使用一个生成抽象语法树(AST)的库,如espree
,而不是尝试自己实现它。