支持带有 terser + rollup 的旧浏览器?

Support old browser with terser + rollup?

我需要支持相当旧的浏览器...我想说最后回到 IE10 或 11。

我添加了 rollupterser...我想用箭头函数等编写 ES2017 代码...然后将其转换为非常旧的 JS 版本 运行 在那些旧浏览器中。

这是我的汇总配置:

import { terser } from 'rollup-plugin-terser';

export default {
  input: 'src/load.js',
  output: {
    file: 'dist/load.js',
    format: 'iife',
    sourcemap: false,
    plugins: [
      // https://github.com/terser/terser#minify-options
      terser({
        ecma: '5',
        compress: true,
        mangle: true,
      }),
    ],
  },
};

不幸的是,这似乎并没有真正将我的任何花哨的箭头函数转换为普通的匿名函数等......我有点困惑我在这里做错了什么?

我看到我可以通过 compress 选项手动控制这些,但我不认为我应该被要求手动设置每种类型的功能,因为我不知道哪些浏览器支持什么。我会怀疑我只是告诉它“转换为 ES5”,剩下的就交给它了。

我是这样解决的

import { terser } from 'rollup-plugin-terser';
import getBabelOutputPlugin from '@rollup/plugin-babel';

export default {
  input: 'src/load.js',
  plugins: [
    // https://github.com/terser/terser#minify-options
    terser({
      ecma: '5',
      compress: true,
      mangle: true,
    }),
    getBabelOutputPlugin({
      babelHelpers: 'bundled',
      presets: [
        ['@babel/preset-env', {
          targets: '> 0.25%, last 2 versions, Firefox ESR, not dead',
        }],
      ],
    }),
  ],
  output: {
    file: 'dist/load.js',
    format: 'iife',
    sourcemap: false,
  },
};