Может ли Webpack tree-shaking удалить неиспользуемые babel-polyfills?

Я пытаюсь заставить webpack tree-shaking удалить неиспользуемые babel-polyfill.

index.js файл содержит:

import 'babel-polyfill'
const add4 = n => n + 4
const add5 = n => n + 5
add4(6)

console.log('boom', add4(4))

В этом файле ни один код не требует какого-либо полифилла es2015 +, поэтому я ожидал, что встряхивание дерева удалит неиспользуемые полифиллы babel из связанного вывода. Это не так, и комплект все еще содержит их (в уменьшенном виде). ​​

Вот репозиторий git с этим кодом.

Конфигурация веб-пакета:

const MinifyPlugin = require('babel-minify-webpack-plugin')

module.exports = {
  entry: './index.js',
  output: {
    filename: 'bundle-webpack.js'
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader'
        }
      }
    ]
  },
  plugins: [
    new MinifyPlugin({ mangle: { topLevel: true } }, { comments: false })
  ]
}

и .babelrc:

{
  "presets": [
    [
      "env",
      {
        "targets": {
          "browsers": ["chrome >= 50", "iOS >= 10", "ie >= 8"]
        },
        "useBuiltIns": true,
        "modules": false,
        "loose": true
      }
    ]
  ]
}

Я пытался заменить babel-minify-webpack-plugin на uglifyjs-webpack-plugin, но результат тот же.

Как можно сделать так, чтобы встряхивание дерева работало, и на выходе не было никаких babel-polyfills, которые не используются в исходном коде?


person François Romain    schedule 16.11.2017    source источник


Ответы (1)


Теперь я понимаю, что babel-polyfill изменяет глобальную область видимости, в которой дрожание дерева может не иметь никакого эффекта ...

Это был глупый вопрос :)

person François Romain    schedule 16.11.2017