babel-preset-env не меняет размер сборки - PullRequest
0 голосов
/ 02 мая 2018

У меня есть приложение ES6 React, которое идет в комплекте с веб-пакетом и использует babel. Я настраиваю babel-preset-env, для узла все работает отлично, но для браузера размер моей сборки не меняется независимо от целевого процента. Размер тот же, когда интервал> 1 или 90%.

Версия веб-пакета 1.13.1, моя версия babel 6.26.0 и версия babel-preset-env 1.6.1

У меня есть это в моем .babelrc

{
  "presets": [
    "es2015",
    "stage-0",
    "react",
    [
      "env",
      {
        "targets": {
          "node": "9.4.0",
          "browsers": [
            ">1%"
          ]
        }
      }
    ]
  ],
  "plugins": [
    [
      "transform-class-properties",
      "transform-runtime",
      "transform-decorators-legacy",
      "react-intl",
      {
        "messagesDir": "./build/messages",
        "enforceDescriptions": false
      }
    ]
  ]
}

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Убедитесь, что в вашем index.js есть import "@babel/polyfill";.

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

entry: ["@babel/polyfill", path.join(__dirname, "./src/index.js")],

в конфигурации вашего веб-пакета переместите полифилл, чтобы он выглядел как

entry: path.join(__dirname, "./src/index.js")

0 голосов
/ 26 августа 2018

Когда вы используете babel-preset-env, в соответствии со списком браузеров ваша цель решит включить только необходимые преобразования Babel.

Это альтернатива es2015 и stage-0, и включение этих пресетов вместе с env контрпродуктивно, поскольку преобразования, включенные в эти пресеты, будут применяться независимо от того, нужны они или нет.

Это также зависит от того, как вы используете babel-polyfill. Установите его как import 'babel-polyfill' в начале вашего файла ввода JavaScript, и babel-preset-env заменит импорт на отдельный импорт только теми полифиллами, которые необходимы для целевых браузеров.

Я не уверен, работает ли он таким образом, если вы включите babel-polyfill в качестве опции Webpack entry, например ::

js entry: { myentry: ['babel-polyfill', 'js/index.js'] }

Надеюсь, это поможет вам уменьшить размер пакета!

P.S. Я знаю, что документация babel-preset-env не самая ясная , когда дело доходит до описания того, что вам нужно делать.

...