如何解析模块中已命名的ES6 / ES2015导出列表?

时间:2017-06-20 04:08:38

标签: javascript meteor ecmascript-6

我想解析导出语句的javascript文件的文本内容,并从模块中提取命名导出列表。

为什么呢?我希望扩展import-js的Meteor环境以了解本地软件包,并且主要支持似乎能够解析和识别每个软件包的命名导出。

现有的实现标识了包名,路径和isopack,因此我可以轻松获得每个包的mainModule的路径。我只需要帮助解析该文件以获取导出语句。

1 个答案:

答案 0 :(得分:2)

您可以使用babylon生成输入文件的JavaScript AST,然后检查ExportDefaultDeclarationExportNamedDeclarationExportAllDeclaration的顶级。给出以下示例:

export default test;
export { foo as bar, baz };
export let lol = "okay then"; // also var, const
export * from 'import-js';

Babylon 7 generates this AST

Babylon 7 AST

您可以使用this list of various supported syntaxes for export并使用the explorer查看预期会生成哪些Babylon,然后您可以使用生成的JSON获取所需的已解析信息。