问题描述
Babel(以下配置)会转换以下简单箭头功能:
const clipboard = id => {
const scratchpad = document.createElement('input');
scratchpad.value = document.getElementById(id).innerText;
document.body.appendChild(scratchpad);
scratchpad.select();
document.execCommand('copy');
document.body.removeChild(scratchpad);
}
...分为以下内容:
var clipboard = function clipboard(id) {
var scratchpad = document.createElement('input');
scratchpad.value = document.getElementById(id).innerText;
document.body.appendChild(scratchpad);
scratchpad.select();
document.execCommand('copy');
document.body.removeChild(scratchpad);
};
我想要产生的结果是这样的:
function clipboard(id) {
var scratchpad = document.createElement('input');
scratchpad.value = document.getElementById(id).innerText;
document.body.appendChild(scratchpad);
scratchpad.select();
document.execCommand('copy');
document.body.removeChild(scratchpad);
};
换句话说,我希望Babel将分配的箭头函数转换为ES5命名函数,而无需将函数分配给变量。 这可能吗?如果可能,怎么办?
我的构建管道包括一个uglify任务,该任务处理变量名(但不包括函数名)。我可以使用uglify的mangle: { reserved: [] }
选项,但这需要手动跟踪每个命名的箭头函数。
来自package.json:
"browserslist": "defaults","babel": {
"presets": [
[
"@babel/preset-env",{
"useBuiltIns": "usage","corejs": "3.6.5"
}
]
]
},
解决方法
基于上面的评论,答案似乎是,“ 您不应该这样做。”
如上所示,Babel变换箭头功能是为了避免生产中潜在的意外副作用。