我正在研究如何从babel 编译过程中提取一些信息。
更具体地说,当我运行babel (不管是否使用Webpack的babel-loader、测试框架的变压器、巴贝尔氏CLI等)时,我需要为提取一些信息,用于每个编译的文件E 216。比如:
到目前为止我尝试过的
Webpack测速插件(链接)
工作正常,但它只提供Webpack的装载机运行时间。没有关于单个编译文件的信息。
连接Webpack的编译器/编译实例
我认为写Webpack插件可以像这里描述的那样与编译过程挂钩,但是我找不到正确的钩子来识别babel正在处理的文件。
更新
我想“开洛卡”指出了正确的方向。更具体地说,我理解Babel的选项是链接到Babel编译过程的关键。
见babel-minify的定时插件。
相关线程:
更新28/04/18
最后,我尝试将解决方案封装到一个我称为巴贝尔计时的工具中。
发布于 2019-04-14 01:17:10
您可以使用@babel/core和babel.transformSync(code),它们将返回抽象句法树 (AST)信息以及其他一些数据。还可以添加一些逻辑来衡量该方法的性能。
我设置了一个最小的回购程序,并自己玩了一下:https://github.com/kidroca/babel-meta
基本上您可以运行npm run analyze-file ./es6-src/es6-module.js或npm run analyze-dir ./es6-src/es6-module.js并签出结果。
这将返回:
{
"filename": "/full/path/to/src/file.js",
"cwd": "current/dir",
"ast": "ast information json - lines, comments, and other info",
"executionTime": "execution time in ms",
/* a lot of other info */
}您可以修改analyze.js文件以筛选出所需的信息。
您可以修改.babelrc文件以控制转换和添加/删除插件。
https://stackoverflow.com/questions/55537633
复制相似问题