0

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

我添加了rollup...terser我想编写带有箭头函数等的 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”,然后它会完成其余的工作。

4

1 回答 1

3

这是我解决它的方法

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,
  },
};
于 2020-10-06T23:00:06.497 回答