说我有这样的文件:
export const dotReadme = {
config1: { // <-- I want to get this line number.
brief: 'foo1234',
title: 'foo!',
},
config2: { // <-- And I want to get this line number.
...
},
}
我想提供关于每个配置键定义位置的可追溯性。
所以稍后我想打印一些类似的东西:
`config1` was defined at `config.js:1`
`config2` was defined at `config.js:6`
最好的方法是什么?是否存在某种东西?
__line
的密钥。但是,这仅在值为对象时有效。我可以将所有原始类型作为对象包装,以便我能够完成这项工作。也许某些检测库会有用,因为它看起来像是类似的东西,也许是babel-plugin-istanbul
。
它应该通过源图片将行号提供回原始源。
用户将创建,编译,编辑并可能将这些配置文件发布到npm。
所以看起来你可以在JS中填充原语,你只需要使用new String
,这样就可以添加其他属性了。
> const str = new String('foo')
undefined
> str.__line = 1
1
> str
{ [String: 'foo'] __line: 1 }
>
我整理了一个概念证明babel插件here。目前这感觉就像最好的方法。
唯一的缺点是要求用户使用这个babel插件编译他们的配置文件。但我想这只是为了进行额外的细粒度调试,而拳击不应该影响任何代码。