Babel polyfill включает в себя все polyfill независимо от того, какие цели установлены - PullRequest
0 голосов
/ 07 ноября 2018

Я использую 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 import

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

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

1 Ответ

0 голосов
/ 04 января 2019

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

// 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

...