Kas tas Biome.js ir kodėl jis kelia tiek susidomėjimo?
Jei sekate JavaScript ekosistemos naujienas, tikriausiai pastebėjote, kad pastaraisiais metais įrankių peizažas keičiasi sparčiau nei kada nors. Vienas iš ryškiausių naujokų – Biome.js, kuris atėjo su ambicingiausiu tikslu: pakeisti ESLint ir Prettier kombinaciją vienu greitu, patikimu įrankiu. Ir žinote ką? Jis parašytas Rust kalba, o tai reiškia, kad greitis čia nėra tik reklaminė frazė.
Biome.js gimė iš Rome Tools projekto pelenų. Rome buvo ambicinga iniciatyva, kuri norėjo sukurti visą JavaScript įrankių rinkinį – nuo linterio iki bundlerio. Deja, projektas susidūrė su finansavimo problemomis ir buvo nutrauktas. Tačiau bendruomenė nenorėjo leisti tokiam potencialui išgaruoti, todėl atsirado Biome – fork’as, kuris tęsia pradinę viziją, bet su realistiškesniais tikslais ir aktyvesne bendruomene.
Šiandien Biome.js siūlo du pagrindinius dalykus: linterį ir formatterį. Jokių bundlerių ar kompiliatorių – bent jau kol kas. Ir tai yra protinga strategija, nes geriau padaryti du dalykus puikiai, nei dešimt vidutiniškai.
Greitis, kuris verčia atkreipti dėmesį
Kai kalbame apie Rust parašytus įrankius, greitis paprastai yra pirmasis dalykas, kuris minimas. Ir Biome tikrai nepasimeta šioje srityje. Palyginti su ESLint ir Prettier kombinacija, Biome gali būti 10-20 kartų greitesnis. Taip, jūs nesupratote klaidingai – ne 10-20 procentų, o kartų.
Ką tai reiškia praktiškai? Jei jūsų projektas su ESLint ir Prettier užtrunka 30 sekundžių formatavimui ir lintinimui, su Biome tai gali užtrukti vos 2-3 sekundes. Dideliuose projektuose, kur turite tūkstančius failų, šis skirtumas tampa ne tik maloniu priedėliu, bet realia produktyvumo problema.
Greitis pasireiškia ne tik viso projekto skenavime. Kai naudojate Biome su IDE integracija, pastebėsite, kad klaidos ir pataisymai atsiranda beveik akimirksniu. Nėra to įprasto delso, kurį jaučiate su ESLint, ypač dideliuose failuose. Tai gali atrodyti kaip smulkmena, bet kai dirbi su kodu visą dieną, tokios smulkmenos sudaro didelį skirtumą.
Konfigūracija, kuri nevargins nervų
Vienas didžiausių ESLint ir Prettier skausmų – konfigūracija. Jums reikia dviejų atskirų konfigūracijos failų, kartais jie konfliktuoja tarpusavyje, reikia įdiegti dešimtis pluginų, išplėtimų, shareable config’ų… Tai virsta tikru košmaru, ypač naujiems projekto nariams.
Biome naudoja vieną biome.json failą. Viskas vienoje vietoje – ir linterio taisyklės, ir formatavimo nustatymai. Štai kaip atrodo minimalistinė konfigūracija:
{
"$schema": "https://biomejs.dev/schemas/1.5.0/schema.json",
"organizeImports": {
"enabled": true
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2
}
}
Ir tai jau veikia! Nereikia ieškoti, kokius pluginus įdiegti, kaip juos sukonfigūruoti, ar jie tarpusavyje nekonfliktus. Tiesiog įjunkite tai, ko jums reikia, ir Biome pasirūpina viskuo kitu.
Dar vienas malonus dalykas – Biome turi puikią dokumentaciją apie kiekvieną taisyklę. Kai gaunate klaidą ar įspėjimą, galite greitai pamatyti ne tik kodėl tai problema, bet ir kaip ją išspręsti. Dokumentacija parašyta aiškiai, su pavyzdžiais, be bereikalingo techninio žargono.
Migravimas iš ESLint ir Prettier
Gerai, greitis ir paprasta konfigūracija skamba puikiai, bet kas nutinka su jūsų esamais projektais? Ar reikia viską perrašyti nuo nulio? Laimei, ne.
Biome komanda supranta, kad niekas nenori praleisti savaičių, migruojant į naują įrankį. Todėl jie sukūrė migracijos įrankius, kurie gali konvertuoti jūsų esamas ESLint ir Prettier konfigūracijas į Biome formatą. Tai nėra tobula – kai kurios specifinės taisyklės ar pluginai gali neturėti tiesioginių ekvivalentų, bet dauguma standartinių setup’ų migruoja gana sklandžiai.
Praktiškai migravimas atrodo taip: pirmiausia įdiekite Biome kaip dev dependency:
npm install --save-dev --save-exact @biomejs/biome
Pastebėsite --save-exact flag’ą. Tai rekomenduojama, nes Biome dar aktyviai vystomas ir kartais gali būti breaking changes tarp versijų. Geriau kontroliuoti, kada atnaujinate.
Toliau galite paleisti migracijos komandą, jei turite esamą konfigūraciją, arba tiesiog sukurti naują biome.json failą su numatytaisiais nustatymais. Daugelis projektų pradeda nuo rekomenduojamų taisyklių ir palaipsniui pritaiko jas savo poreikiams.
Vienas patarimas: nemėginkite migruoti visko iš karto. Pradėkite nuo formatavimo – tai paprasčiausia dalis ir duoda akivaizdžiausią rezultatą. Kai įsitikinsite, kad formatavimas veikia gerai, galite pradėti naudoti linterį. Ir nebijokite laikinai turėti ir Biome, ir ESLint – galite palaipsniui pereiti, kol viskas veiks taip, kaip jums reikia.
Linterio galimybės ir apribojimai
Biome linteris nėra tiesiog ESLint klonas. Jis turi savo požiūrį į tai, kas yra geras kodas ir kaip turėtų būti tikrinamas. Šiuo metu Biome palaiko apie 200+ taisyklių, kas yra gerokai mažiau nei ESLint ekosistema su visais pluginais, bet dauguma kasdienių poreikių yra padengti.
Ką Biome daro gerai? Jis puikiai tvarko JavaScript ir TypeScript sintaksės klaidas, įprastus antipatterns, potencialias klaidas kode. Jis taip pat turi gerą React palaikymą – daugelis populiarių eslint-plugin-react taisyklių turi ekvivalentus Biome.
Tačiau yra ir apribojimų. Jei naudojate labai specifines ESLint pluginus, pavyzdžiui, kažką susijusio su konkrečiu framework’u ar biblioteka, gali būti, kad Biome dar neturi tokios funkcionalumo. Taip pat, jei jūsų komanda turi daug custom ESLint taisyklių, jų negalėsite tiesiogiai perkelti į Biome – bent jau ne taip lengvai.
Bet štai kas įdomu: Biome linteris yra labai geras gaudant realias klaidas. Kadangi jis parašytas Rust ir turi gerą supratimą apie kodo struktūrą, jis gali atlikti sudėtingesnę analizę nei daugelis ESLint taisyklių. Pavyzdžiui, jis puikiai aptinka nenaudojamus kintamuosius, nepasiektą kodą, potencialias null/undefined problemas.
Formatavimas: Prettier alternatyva
Biome formatteris yra sukurtas būti Prettier suderinamam. Tai reiškia, kad daugumoje atvejų jūsų kodas bus suformatuotas labai panašiai, kaip su Prettier. Tačiau yra keletas skirtumų, kuriuos verta žinoti.
Pirmiausia, Biome formatteris yra greitesnis. Daug greitesnis. Jei turite didelį projektą su tūkstančiais failų, formatavimas su Biome bus beveik akimirksnis, palyginti su Prettier, kuris gali užtrukti kelias dešimtis sekundžių.
Antra, Biome formatteris yra šiek tiek mažiau opinionated nei Prettier. Tai reiškia, kad turite daugiau galimybių pritaikyti formatavimą savo poreikiams. Tačiau tai taip pat reiškia, kad turite priimti daugiau sprendimų. Prettier filosofija buvo „vienas būdas viskam”, o Biome duoda šiek tiek daugiau lankstumo.
Vienas iš dažniausių klausimų: ar galiu naudoti Biome formatterį, bet palikti ESLint linteriui? Taip, galite! Daugelis komandų pradeda būtent nuo to. Pakeičiate Prettier į Biome formatterį dėl greičio, bet paliekate ESLint, nes turite daug custom taisyklių ar pluginų. Tai visiškai teisėtas požiūris ir gali būti geras pirmasis žingsnis.
IDE integracija ir developer experience
Įrankis gali būti greitas ir galingas, bet jei jį sunku naudoti kasdienėje veikloje, niekas jo nenaudos. Biome komanda tai supranta ir investavo nemažai pastangų į gerą developer experience.
VS Code turi oficialų Biome plėtinį, kuris veikia puikiai. Įdiegiate plėtinį, ir jis automatiškai aptinka biome.json konfigūraciją jūsų projekte. Klaidos ir įspėjimai rodomi realiu laiku, galite formatuoti failą išsaugojimo metu, naudoti quick fixes – viskas, ko tikitės iš modernaus linterio.
WebStorm ir kiti JetBrains IDE taip pat palaiko Biome per įtaisytą palaikymą arba per pluginus. Neovim, Emacs, Sublime Text – dauguma populiarių editorių turi kokią nors integraciją. Bendruomenė aktyviai kuria ir palaiko šiuos plėtinius.
Vienas malonus dalykas – Biome turi LSP (Language Server Protocol) palaikymą. Tai reiškia, kad bet kuris editorius, kuris palaiko LSP, gali lengvai integruoti Biome. Nereikia kurti specifinių plėtinių kiekvienam editoriui.
Dar viena svarbi developer experience dalis – CLI. Biome CLI yra intuityvus ir greitas. Komandos yra aiškios, output’as lengvai skaitomas, error messages informatyvūs. Pavyzdžiui:
biome check --apply ./src
Ši viena komanda patikrina visus failus src direktorijoje, rodo klaidas ir automatiškai taiso tai, ką gali pataisyti. Paprasta ir efektyvu.
CI/CD integracija ir automatizavimas
Lokalus development’as – tai tik pusė istorijos. Moderniuose projektuose labai svarbu, kad jūsų įrankiai gerai veiktų CI/CD pipeline’uose. Biome šioje srityje yra puikus.
Kadangi Biome yra vienas binary failas be daug dependencies, jį labai lengva įdiegti CI aplinkoje. Nereikia rūpintis Node.js versijomis, npm install lėtumu ar cache’inimu – tiesiog atsisiųskite Biome binary ir paleiskite.
GitHub Actions pavyzdys gali atrodyti taip:
- name: Setup Biome
uses: biomejs/setup-biome@v1
- name: Run Biome
run: biome ci ./src
Pastebėsite biome ci komandą. Tai speciali komanda, sukurta būtent CI aplinkoms. Ji patikrina kodą, bet nemodifikuoja failų, ir grąžina ne-nulinį exit code, jei randa problemų. Idealiai tinka pull request checks.
Greitis čia vėlgi yra didelis privalumas. Jūsų CI pipeline’ai bus greitesni, o tai reiškia greitesnį feedback loop’ą. Vietoj to, kad laukti 2-3 minučių, kol ESLint ir Prettier patikrina jūsų kodą, su Biome tai gali užtrukti 10-20 sekundžių.
Ateitis ir bendruomenė
Biome vis dar yra gana jaunas projektas. Pirmoji stabili versija buvo išleista tik 2023 metais, ir nors progresas yra įspūdingas, vis dar yra dalykų, kurie vystomi. Bet tai nereiškia, kad negalite jo naudoti production’e – daugelis kompanijų jau tai daro.
Kas toliau? Biome roadmap’e yra daug įdomių dalykų. Planuojama plėsti palaikomų kalbų sąrašą – ne tik JavaScript ir TypeScript, bet ir JSON, CSS, galbūt net HTML. Taip pat planuojama daugiau linterio taisyklių, geresnė integracija su populiariais framework’ais, performance optimizacijos.
Bendruomenė auga sparčiai. GitHub repository turi tūkstančius žvaigždučių, Discord serveris aktyvus, contributions plaukia reguliariai. Tai geras ženklas – reiškia, kad projektas nėra priklausomas nuo vieno ar dviejų maintainerių ir turi ilgalaikę perspektyvą.
Ar turėtumėte pereiti prie Biome dabar? Priklauso nuo jūsų situacijos. Jei pradėdate naują projektą, Biome yra puikus pasirinkimas – paprastas setup’as, greitas, modernus. Jei turite esamą projektą su sudėtinga ESLint konfigūracija ir daugybe custom taisyklių, galbūt verta palaukti, kol Biome ekosistema dar labiau subręs.
Bet viena yra aišku: Biome.js rodo, kur link juda JavaScript įrankių ekosistema. Greitis, paprastumas, geresnė developer experience – tai dalykai, kurių visi norime. Ir Rust parašyti įrankiai, tokie kaip Biome, SWC, esbuild, rodo, kad galime turėti ir greitį, ir patikimumą, ir gerą funkcionalumą. Nebereikia rinktis tarp šių dalykų – galime turėti viską.
