ブラウザ対応
Docusaurus allows sites to define the list of supported browsers through a browserslist configuration.
目的
Webサイトでは、後方互換性とバンドルサイズのバランスを取る必要があります。 古いブラウザは最新のAPIや構文に対応していないため、同じ機能を実装するためにはより多くのコードが必要になります。
For example, you may use the optional chaining syntax:
const value = obj?.prop?.val;
しかしこれは残念ながら、2020年以降にリリースされたブラウザのバージョンでしか認識されません。 それ以前のブラウザバージョンと互換性を持たせるため、本番用のサイトを構築する際には、私たちのJSローダーがこのようなコードを次のようなより回りくどい構文にトランスパイル(変換)します。
var _obj, _obj$prop;
const value =
(_obj = obj) === null || _obj === void 0
? void 0
: (_obj$prop = _obj.prop) === null || _obj$prop === void 0
? void 0
: _obj$prop.val;
しかし、この場合、29文字の行が168文字と6倍になるため、サイトのロード時間が長くなり、他のすべてのユーザーに不利益をもたらすことになります! (実際には、使用される名前が短縮されるため、よりマシにはなります) トレードオフとして、JSローダーは、ブラウザリストに定義されているすべてのブラウザのバージョンでサポートされている程度までにしか構文を変換しません。
The browser list by default is provided through the package.json file as a root browserslist field.
古いブラウザでは、コンパイルされた出力にサポートされていない(新しすぎる)JS構文が使用されるため、Reactの初期化に失敗し、HTML/CSSのみでJSがない静的なウェブサイトになってしまいます。
既定値
Websites initialized with the default classic template has the following in package.json:
{
"name": "docusaurus",
// ...
"browserslist": {
"production": [">0.5%", "not dead", "not op_mini all"],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
// ...
}
自然な言葉で説明すると、本番環境でサポートされるブラウザの条件は次のようになります。
- With more than 0.5% of market share; and
- Has official support or updates in the past 24 months (the opposite of "dead"); and
- Opera Mini以外
また、開発環境でサポートされるブラウザは次の通りです。
- The latest version of Chrome or Firefox or Safari.
You can "evaluate" any config with the browserslist CLI to obtain the actual list:
npx browserslist --env="production"
本番環境でサポートされるすべてのブラウザが出力されます。 2022年1月現在の出力は次の通りです。
and_chr 96
and_uc 12.12
chrome 96
chrome 95
chrome 94
edge 96
firefox 95
firefox 94
ie 11
ios_saf 15.2
ios_saf 15.0-15.1
ios_saf 14.5-14.8
ios_saf 14.0-14.4
ios_saf 12.2-12.5
opera 82
opera 81
safari 15.1
safari 14.1
safari 13.1
もっと読む
You may wish to visit the browserslist documentation for more specifications, especially the accepted query values and best practices.