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

Transpile Arrow Functions into Named Functions without Variable Assignment

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 如上图所示转换箭头函数,以避免在生产中产生潜在的意外副作用。