支持旧浏览器与 terser + rollup 吗?

Tal*_*boy 2 javascript rollup ecmascript-6 babeljs terser

我需要支持相当旧的浏览器...我想说最后回到 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,
      }),
    ],
  },
};
Run Code Online (Sandbox Code Playgroud)

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

我发现我可以通过compress选项手动控制这些功能,但我不觉得应该要求我手动设置每种类型的功能,因为我不知道哪些浏览器支持哪些功能。我怀疑我只是告诉它“转换为 ES5”,它就会完成剩下的事情。

Tal*_*boy 5

这是我解决问题的方法

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,
  },
};
Run Code Online (Sandbox Code Playgroud)