Browserslist: caniuse-lite is outdated.

A Symfony projectekben a UI kódok buildje során ez a hibaüzenet jön szembe egy idő után:

Browserslist: caniuse-lite is outdated. Please run:
  npx browserslist@latest --update-db
  Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating

Mi ez a probléma?

A browserslist hivatkozik a caniuse-lite csomagra ami egy idő után elavul. Elég agresszív a hibaüzenet és tökre elnyomja a valódi hibákat is. A fejlesztő persze meg tudja indokolni, hogy ez miért kell, talán érthető is, a mód viszont tökre ellenszenves. Azt nem veszi csak figyelembe, hogy ha a caniuse-lite-ot nem te használod direktben, és történetesen yarnt használsz, a függőségi fa mélyebb részén lévő csomagot a yarn nem tudja frissíteni. A yarntól el is lehetne térni, de a symfony/encore alapból azt javasolja, a nyilvánvaló problémáival együtt. A browserslist elképzelése szerint minden héten minden csomagot mindig frissíteni kéne, ami szerintem nonszensz. Ennyi kecske nincs a világon.

Milyen megoldást találtam ki erre?

Szerintem alapból azt kéne csinálnia a browserslist csomagnak, hogy nem mint node függőség teszi fel a csomagot, hanem egy cache mappába tölti le, mint egy csomag, és onnan húzza be az információkat. Innen jött az ötlet, hogy kiszervezem a caniuse-lite csomagot a build környezetből és csak azt az egy csomagot frissen tartom anélkül, hogy a yarn-t lecserélném. A build folyamat részévé tettem az alábbi lépéseket:

  • Feltelepítem pontosan azokat a csomagokat amiket a lock file kíván
  • Feltelepítem/frissítem globálisan a caniuse-lite csomagot
  • Rákényszerítem a node modul keresést a NODE_PATH env. variable segítségével, hogy a helyi telepítések helyett a globális könyvtárban találhatót használja amit viszont én mindig frissen tartok.

Szerintem a caniuse-lite-ot egyébként is így kéne használni, hogy egy központi helyre települ minden metaadat amit használ a többi csomag.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.