我正在为JavaScript客户端代码创建一个日志记录子系统,并使用babel来预处理ES2015代码。我看到获取源文件名和行号的唯一解决方案是基于从异常处理中获取调用堆栈。我想知道Babel或任何其他预处理器是否支持(或应该支持)旧的C预处理器概念" __ LINE__"和" __文件__"?如果它存在,我可以写:
mylog( "some text", anObject, __FILE__ , __LINE__)
和babel会友好地提供
mylog( "some text", anObject, "mydir/myfile.js", 135)
在后处理文件中。我可以想象在调用babel之前编写一个perl脚本来执行此操作,但是让webpack,jspm或mocha通过两个预处理器来管道源代码可能比我能想出的更多。
思想/建议?
答案 0 :(得分:2)
对于这么多年后通过google碰到这个问题的人,以下是当前的解决方案:
npm软件包babel-plugin-transform-line将__line
转换为当前源行号,而babel-plugin-transform-dirname-filename将__filename
和__dirname
转换为当前源文件名,它所在的目录。
因此,在安装了这些插件并将babel配置为使用它们的情况下,您可以执行以下操作以达到预期的结果:
mylog("some text", anObject, __filename , __line)
答案 1 :(得分:0)
简而言之,没有。
Babel只会将您的代码编译为ES5,具体取决于您在.babelrc
中提到的插件和预设。