处理完所有文件后运行的Babel钩子?

时间:2019-04-30 00:44:41

标签: javascript babeljs

在Babel插件中,有一个post钩子,该钩子在处理单个JS文件后运行。但是,我想在处理所有JS文件后运行一些代码。这可能吗?

现在,我刚刚添加了一个新插件,该插件可以在第一个插件之后运行,但是如果它们是一个插件,它将更加干净。

1 个答案:

答案 0 :(得分:2)

简短的答案是Babel不提供这样的钩子,因为Babel的核心转换系统一次运行一个文件。整个API是:

babel.transform("var foo; /* some code */", { filename: "foo.js" });

因此无法注册在文件处理后将运行的内容。

更长的答案是,如果您专门使用Webpack,则可以将Babel与Webpack插件结合使用,以从每个文件中收集元数据,然后对所有这些元数据执行某些操作,但这是一个Webpack / babel-loader特定功能。这样的Webpack插件的一个示例是react-intl-webpack-plugin,它与babel-plugin-react-intl配对。