Полифилл с использованием браузера в Гэтсби всегда предоставляется - PullRequest
2 голосов
/ 09 февраля 2020

Я экспериментировал с Gatsby и полифиллами, используя список браузера, который поддерживается Gatsby ( do c).

Используя конфигурацию браузера по умолчанию, я получаю ожидаемый результат, который создает полифилы для IE11 и рабочее оповещение. Смотрите мой пример репозитория github . В настоящее время сайт доступен здесь, на Netlify .

Итак, я могу видеть в производственном коде, как функции стрелок и функция array.prototype.find являются полизаполненными. Пока ничего странного.

Теперь, если я изменю список браузеров на last 2 Chrome versions и соберу производство, я ожидаю, что полифил для метода find () массива исчезнет, ​​так как он поддерживается chrome. Тем не менее, я считаю, что все еще могу найти те же полифилы (из core- js) в app-2934fab61c547573181d.js:

    dRSK: function(t, e, n) {
        "use strict";
        var r = n("XKFU")
          , o = n("CkkT")(5)
          , i = !0;
        "find"in [] && Array(1).find((function() {
            i = !1
        }
        )),
        r(r.P + r.F * i, "Array", {
            find: function(t) {
                return o(this, t, arguments.length > 1 ? arguments[1] : void 0)
            }
        }),
        n("nGyu")("find")
    },

Поэтому мой вопрос: почему эти полифилы все еще доступны, даже когда я использую запрос списка браузеров, который явно не нуждается в этом?

1 Ответ

1 голос
/ 12 февраля 2020

Это может показаться немного сумасшедшим, но "Это работает на моей машине":)

Я запустил npm run build в вашем репо, и пакет содержал полифилл find - что ожидается с browserslist is [">0.25%", "not dead"].

Изменение browserslist на ["last 2 Chrome versions"] ничего не изменило в сборке - find все еще был там.

После некоторых экспериментов я заметил, что любое изменение browserslist было проигнорировано.

Итак, я попробовал это:

  1. изменил browserslist в package.json
  2. run npm run clean - удаляет .cache и public
  3. пробег rm -rf node_modules
  4. пробег npm install
  5. пробег npm run build: и find полифилл исчез!

Надеюсь, это работает для вас !

У меня нет логического объяснения этому.

PS: в документах они рекомендуют clean после редактирования package.json - детали . Переустановка node_modules кажется немного экстремальной, но, похоже, это решает проблему.

...