概述
我写了一个babel插件,该插件将自定义构造函数添加到类中。我还使用@babel/plugin-proposal-class-properties
插件来支持类属性。我的.babelrc
看起来像这样:
{
"plugins": [
"./plugins/my-plugin.js",
"@babel/plugin-proposal-class-properties",
]
}
我正在使用babel-core@7.2.2
和@babel/plugin-proposal-class-properties@7.2.3
。
问题
类属性插件会覆盖我生成的构造函数。例如,给定此测试文件:
// Source
class Test extends Base {
// someProp = 'yay';
}
如果我在没有类属性插件的情况下运行 ,则会插入我的构造函数:
// Transpiled (no class props)
class Test extends Base {
constructor() {
super(...arguments);
console.log('my special custom code');
}
}
但是,如果我取消注释someProp
并启用类属性插件,则我的自定义代码将被覆盖:
// Transpiled (with class props)
class Test extends Base {
constructor(...args) {
super(...args);
_defineProperty(this, "someProp", 'yay');
}
}
我列出插件的顺序似乎并不重要。这是预期的吗,有没有解决的办法,还是这是一个错误?
我认为插件的实现并不重要-但是,如果有的话,我可以添加更多细节。
任何帮助表示赞赏。谢谢!
答案 0 :(得分:0)
我最终在Babel闲暇社区寻求帮助,他们能够帮助我解决此问题。
问题是我在实现中使用了其他访问者-我为ClassDeclaration
和ClassMethod
指定了访问者,但是在plugin-proposal-class-properties
实现中的访问者位于{{1 }}。当我更改代码以从Class
开始工作并确保我的代码先运行时,这些属性已按预期添加到我的自定义构造函数中。