|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "Czy wiesz, czym jest i jak działa Browserslist?" |
| 4 | +date: 2026-03-27T08:00:00+01:00 |
| 5 | +published: true |
| 6 | +didyouknow: true |
| 7 | +lang: pl |
| 8 | +author: pgrobelny |
| 9 | +image: /assets/img/posts/2026-03-27-czy-wiesz-czym-jest-i-jak-działa-browserslist/thumbnail.webp |
| 10 | +description: "Od czasu do czasu każda osoba pracująca nad frontendem natrafia na plik o nazwie `browserslist`. Kto z niego korzysta i na co wpływają dokonywane w nim zmiany?" |
| 11 | +tags: |
| 12 | +- frontend |
| 13 | +- javascript |
| 14 | +- angular |
| 15 | +--- |
| 16 | + |
| 17 | +Od czasu do czasu każda osoba pracująca nad frontendem natrafia na plik o nazwie `browserslist`, który jest mało intuicyjny. |
| 18 | +Na pierwszy rzut oka jego zawartość jest czytelna, ale pojawia się pytanie: po co on właściwie istnieje? |
| 19 | +Kto z niego korzysta i jakie skutki mają wprowadzane w nim zmiany? |
| 20 | + |
| 21 | +## Czym jest Browserslist? |
| 22 | +Browserslist to **konfiguracja**, z której czytają inne narzędzia i na jej podstawie podejmują decyzje najczęściej związane z **etapem kompilacji**. |
| 23 | +Na przykład: |
| 24 | +- jakie polyfille zastosować, |
| 25 | +- jaka wersja JS będzie „bezpieczna”, |
| 26 | +- które prefiksy dodać do CSS (np. `-webkit-`, `-moz-`). |
| 27 | + |
| 28 | +Sam Browserslist jest tylko biblioteką, która czyta informacje z caniuse, a następnie przekazuje je dalej do innych narzędzi, |
| 29 | +które ich potrzebują. |
| 30 | + |
| 31 | +## Przykładowy plik browserslist |
| 32 | +Przejdźmy teraz do tego, jak wygląda przykładowy plik konfiguracyjny i omówmy sobie, z czego się składa. |
| 33 | +Poniżej znajduje się przykład konfiguracji z często spotykanymi parametrami: |
| 34 | + |
| 35 | +```text |
| 36 | +last 2 versions |
| 37 | +> 0.5% |
| 38 | +Firefox ESR |
| 39 | +not dead |
| 40 | +last 5 iOS major versions |
| 41 | +``` |
| 42 | + |
| 43 | +Każda linia pliku to informacja o wspieraniu lub niewspieraniu konkretnych urządzeń i przeglądarek. |
| 44 | + |
| 45 | +## Omówienie linia po linii |
| 46 | +Przejdźmy przez każdy z wpisów i wyjaśnijmy, co on oznacza: |
| 47 | + |
| 48 | +### last 2 versions |
| 49 | +Są to dwie ostatnie wersje każdej wspieranej przeglądarki. Dla Google Chrome oznacza to aktualnie wersje 144 i 143. |
| 50 | +### > 0.5% |
| 51 | +Przeglądarki z ponad 0,5% udziału w rynku. |
| 52 | +Informacje o rynku pochodzą z różnych źródeł, są agregowane i przygotowywane później przez caniuse i następnie udostępniane. |
| 53 | +### Firefox ESR |
| 54 | +Najnowsza wersja Firefox Extended Support Release. |
| 55 | +### not dead |
| 56 | +Wyklucza przeglądarki, które nie były aktualizowane przez ostatnie dwa lata. |
| 57 | +### last 5 iOS major versions |
| 58 | +Wyklucza wszystko z wyjątkiem 5 ostatnich wersji systemu iOS, czyli od 15 do 26, uwzględniając przeskoki w numeracji kolejnych wersji. |
| 59 | +Jeżeli nie umieścilibyśmy tej informacji w parametrze major (last 5 iOS major versions), to wynikiem byłyby wersje: 26.2, 26.1, 26.0, 18.7, 18.6. |
| 60 | +## Angular 20 i plik .browserslistrc |
| 61 | + |
| 62 | +Warto jeszcze wspomnieć o tym, że od wersji Angulara 20 pojawił się nowy plik o nazwie `.browserslistrc`, który pełni podobną funkcję. |
| 63 | +Jest on jednak bardziej szczegółowy i zwykle polega na określaniu **konkretnych wersji przeglądarek**, |
| 64 | +żeby lepiej panować nad stabilnością i powtarzalnością buildów. |
| 65 | + |
| 66 | +W praktyce Angular najpierw próbuje znaleźć `.browserslistrc`, a jeśli go nie ma, |
| 67 | +próbuje skorzystać z konfiguracji `browserslist`. |
| 68 | + |
| 69 | +## Gdzie szukać więcej (dokumentacja) |
| 70 | +- [Składnia i przykłady konfiguracji](https://github.com/browserslist/browserslist) |
| 71 | +- [Biblioteka Browserslist (npm)](https://www.npmjs.com/package/browserslist) |
| 72 | +- [Dane Can I Use (caniuse-lite)](https://www.npmjs.com/package/caniuse-lite) |
0 commit comments