browserslist
に従って記述することができます。
browserslist
は、異なるツール間でブラウザの対象範囲を共有するための仕組みで、
browserslit
パッケージを導入すると、
package.json
に記述したようなルールを元に、実際の対象ブラウザがどんなものかを確認することができます。
さっそく入れてみましょう。
$ yarn add -D browserslist
一応ブラウザ情報を最新化しておくと良さそうです
$ yarn browserslist --update-db
さて、この状態で、先程同様に
package.json
にシェア率2%以上の旨が記載された状態で
browserslist
を実行してみます。
$ yarn browserslist
and_chr 81
chrome 80
ios_saf 13.3
safari 13
samsung 11.1
なるほどなるほど。Chromeがダントツなのは予想できますが、他にはsafariと、各種モバイルブラウザが2%以上を維持しているようですね。
例の
I
で始まって
E
で終わるブラウザが入っていないので、トランスパイルが不要というもの納得できます。
ポリフィルとは、最近の機能をサポートしていない古いブラウザーで、その機能を使えるようにするためのコードです。大抵はウェブ上の JavaScript です。
とはいえ、現代の
@babel/preset-env
では、
Polyfill
もどうにかするオプションが用意されています。
これ
のことっぽいけど、見た感じstableに入ってなさそうなのに何でだろ)
safari13だと18個
"use strict";
require("core-js/modules/es.promise.finally");
require("core-js/modules/es.string.replace");
require("core-js/modules/es.typed-array.float32-array");
require("core-js/modules/es.typed-array.float64-array");
require("core-js/modules/es.typed-array.int8-array");
require("core-js/modules/es.typed-array.int16-array");
require("core-js/modules/es.typed-array.int32-array");
require("core-js/modules/es.typed-array.uint8-array");
require("core-js/modules/es.typed-array.uint8-clamped-array");
require("core-js/modules/es.typed-array.uint16-array");
require("core-js/modules/es.typed-array.uint32-array");
require("core-js/modules/es.typed-array.from");
require("core-js/modules/es.typed-array.of");
require("core-js/modules/web.dom-collections.iterator");
require("core-js/modules/web.immediate");
require("core-js/modules/web.url");
require("core-js/modules/web.url.to-json");
require("core-js/modules/web.url-search-params");
Promise.resolve();
IE11だと188個
当たり前ですが、 core-js
をimportしていなかったら何も起こらないのでご注意ください。