Babel polyfill включает все полифиллы, независимо от того, какие цели установлены.

Я использую Babel 7.1 вместе с накопительным пакетом (v0.67). Это моя конфигурация сворачивания:

{
  input: 'src/svg.js',
  output: {
    file: 'dist/myBundle.js',
    name: 'myBundle',
    sourceMap: true,
    format: 'iife'
  },
  plugins: [
    resolve({browser: true}),
    commonjs(),
    babel({
      include: 'src/**',
      runtimeHelpers: true,
      babelrc: false,
      presets: [["@babel/preset-env", {
        modules: false,
        targets: {
          firefox: "63"
        },
        useBuiltIns: "usage"
      }]],
      plugins: [["@babel/plugin-transform-runtime", {
        corejs: false,
        helpers: true,
        regenerator: true,
        useESModules: true
      }]]
    })
  ]
}

Я хочу полифиллировать старые браузеры. Согласно документам, мне нужно включить babel-polyfill в точку входа, что я и сделал. Теперь babel должен включать только необходимые полифиллы (из-за useBuiltIns: "usage"). Однако даже при указании новейших браузеров в качестве цели я получаю полную загрузку кода в свой пакет (10000 строк кода).

Что я пробовал:

  • Я попробовал useBuiltIns: "entry", который исправляет это для более новых браузеров, но это не то, что мне нужно (он просто включает все полифиллы, которые потенциально необходимы браузеру, независимо от того, используются ли они в коде).

  • изменить порядок подключаемых модулей

  • не включать импорт babel-polyfill

Я понятия не имею, почему это происходит. Было бы здорово, если бы кто-нибудь решил эту проблему. Это сводит меня с ума!

И если кто-то знает в качестве бонуса, почему не генерируется исходная карта, я не против получить ответ и на это.


person Fuzzyma    schedule 07.11.2018    source источник


Ответы (1)


Эй, я сделал репо, в котором исследуется хорошая настройка babel/rollup с использованием preset-env и useBuiltIns 'usage'.

// Rollup plugins
import babel from 'rollup-plugin-babel';
import commonjs from 'rollup-plugin-commonjs';
import resolve from 'rollup-plugin-node-resolve';

export default {
    input : 'main.js',
    output : {
        file : 'app.js',
        format : 'iife',
        name : 'PROJECT'
    },
    plugins : [
        resolve(),
        babel({
            exclude : 'node_modules/**',
            presets : [[
                '@babel/env', {
                    useBuiltIns : 'usage'
                }
            ]],
            plugins : [
                '@babel/plugin-transform-runtime'
            ],
            runtimeHelpers : true
        }),
        commonjs()
    ]
};

Взгляните на https://github.com/matt3224/rollup-babel7.

Если вы можете понять, как уменьшить выход, отправьте PR

person matt3224    schedule 04.01.2019