在没有变量分配的情况下将箭头函数转换为命名函数

问题描述

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变换箭头功能是为了避免生产中潜在的意外副作用。