React Academy · Oppitunti

Peer-riippuvuudet ja tree shaking

Määrittäkää React peer-riippuvuudeksi, ottakaa sivuvaikutukseton tree shaking käyttöön ja testatkaa julkaistu paketti

Oppitunti 3/413 vaihetta

Peer-riippuvuudet ja tree shaking on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.

Mitä vertaisriippuvuudet ovat?

Vertaisriippuvuudet ilmoittavat paketit, joita kirjasto tarvitsee mutta joiden toimittamista se odottaa käyttäjältä. Kirjaston package.jsonissa React kuuluu kohtaan peerDependencies, ei kohtaan dependencies. Kun käyttäjä asentaa kirjaston, npm/yarn ei asenna Reactia automaattisesti — käyttäjän sovelluksessa on jo React, ja kirjastosi käyttää samaa instanssia.

Miksi Reactia ei pidä lisätä dependencies-kenttään?

Jos React on kirjastosi dependencies-osiossa, npm saattaa asentaa kuluttajan Reactin rinnalle toisen React-kopion. Kaksi React-instanssia samassa sovelluksessa rikkoo kaikki hookit ja aiheuttaa virheen "Invalid hook call". Kun React ilmoitetaan peerDependencyksi, npm:lle kerrotaan: "Tarvitsen Reactin, mutta käyttäkää sitä, joka kuluttajalla on jo."

peerDependenciesMeta valinnaisille vertaisriippuvuuksille

Jotkin vertaisriippuvuudet voivat olla valinnaisia — esimerkiksi kirjasto, joka tukee sekä styled-componentsia että CSS Modulesia. Merkitkää valinnaiset vertaisriippuvuudet peerDependenciesMeta-asetuksella: { 'styled-components': { optional: true } }. npm ei varoita käyttäjiä puuttuvista valinnaisista vertaisriippuvuuksista, mutta TypeScript-tyypit voidaan silti tarjota, kun valinnainen paketti on asennettu.

sideEffects-kenttä

package.jsonin sideEffects-kenttä kertoo bundlereille, onko kirjaston tree-shaking turvallista. Asetus "sideEffects": false kertoo webpackille, Rollupille ja vastaaville työkaluille, ettei minkään kirjaston moduulin tuominen aiheuta sivuvaikutuksia — kaikki käyttämättömät viennit voidaan poistaa turvallisesti käyttäjän nipusta.

sideEffects CSS-tuontien kanssa

CSS-tuonnit ovat yleinen sivuvaikutus: ne lisäävät tyylit sivulle tuonnin sivuvaikutuksena. Jos kirjasto tuo CSS-tiedostoja, asettakaa "sideEffects": ["*.css", "*.scss"] kertoaksenne bundlereille, että JS-tiedostot voidaan tree-shakata turvallisesti mutta CSS-tiedostot on aina sisällytettävä, kun ne tuodaan.

Rakeinen tree-shaking nimetyillä vienneillä

Parhaan tree-shakabilityn saavuttamiseksi viekää jokainen komponentti nimettynä vientinä omasta tiedostostaan. Viekää index.ts-tiedostossa kaikki uudelleen: export { Button } from './Button'. Kun käyttäjä tuo vain Buttonin, bundleri voi poistaa kaikki muut komponentit. Uudelleenvientejä sisältävät barrel-tiedostot mahdollistavat tämän mallin.

Tree-shakingin tehokkuuden testaaminen

Käyttäkää bundlejs.com-palvelua tree-shakingin testaamiseen: liittäkää tuontilausekkeenne, ja palvelu ilmoittaa todellisen nipun koon. size-limit-npm-paketilla voitte määrittää kokobudjetit package.jsonissa ja keskeyttää CI:n, jos tuonnin koko ylittää rajan: "size-limit": [{ "path": "dist/index.js", "limit": "10 KB" }].

Julkaisun kokobudjetti

Määrittäkää kirjaston tuonneille kokobudjetti. Suorittakaa CI:ssä npx size-limit budjetin valvomiseksi. Nipunkoon kasvu ajan mittaan kertoo laajuuden hallitsemattomasta kasvusta. Keskittyneen komponenttikirjaston yksittäisten komponenttien tuontien tulisi pysyä muutamassa kilotavussa. Ilmoittakaa regressioista ennen kuin ne saavuttavat käyttäjät.

CSS-in-JS-kirjastot komponenttikirjastoissa

Välttäkää styled-componentsia ja Emotionia jaeltaviksi tarkoitetuissa komponenttikirjastoissa. Nämä ajonaikaiset CSS-in-JS-ratkaisut edellyttävät, että käyttäjä asentaa saman kirjaston ja version, mikä aiheuttaa vertaisriippuvuuksien ristiriitoja. Vaikka käyttäjä käyttäisi Tailwindiä tai tavallista CSS:ää, hänen on silti niputettava CSS-in-JS-ajonaikainen ympäristö. Suosikaa CSS Modulesia, joka kääntyy tavalliseksi CSS:ksi koontiaikana.

CSS Modules kirjastoissa

CSS Modules toimii kirjastoissa hyvin, kun sitä käytetään niitä käsittelevän bundlerin kanssa. tsup ja Rollup voivat upottaa CSS Modules -tulosteen rajatuiksi luokkanimiksi. Käyttäjän ei tarvitse määrittää mitään — tyylit on jo rajattu ja sisällytetty JS-nippuun tai erilliseen CSS-tiedostoon, joka tuodaan mukaan.

devDependencies ja peerDependencies

Omat kehitystyökalunne (tsup, TypeScript, testaustyökalut ja Storybook) kuuluvat kohtaan devDependencies — niitä tarvitaan vain kehityksen aikana, eikä niitä asenneta käyttäjien npm install -asennuksissa. React kuuluu sekä kohtaan peerDependencies (ajonaikainen vaatimus) että kohtaan devDependencies (sitä tarvitaan kirjaston kääntämiseen ja testaamiseen paikallisesti).

sideEffects-kentän merkitys

Mitä "sideEffects": false-asetuksen määrittäminen kirjaston package.jsonissa kertoo bundlereille?

Oppitunnin yhteenveto: vertaisriippuvuudet ja tree-shaking

Ilmoittakaa React kohdassa peerDependencies, ei kohdassa dependencies, jotta käyttäjät jakavat sovelluksensa React-instanssin. sideEffects: false mahdollistaa kirjaston täydellisen tree-shakingin. Käyttäkää asetusta sideEffects: ['*.css'] suojaamaan CSS-tuonteja poistamiselta. Yksittäisistä tiedostoista tehdyt nimetyt viennit maksimoivat tree-shakingin rakeisuuden. Valvokaa CI:ssä kokobudjettia size-limitillä. Suosikaa kirjastoissa CSS Modulesia CSS-in-JS:n sijaan vertaisriippuvuuksien ristiriitojen välttämiseksi.

Aloita maksutta

Opi React tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
88
Oppitunnit
324

Usein kysytyt kysymykset

Onko oppitunti ”Peer-riippuvuudet ja tree shaking” ilmainen?

Kyllä – oppitunnin ”Peer-riippuvuudet ja tree shaking” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Peer-riippuvuudet ja tree shaking”?

Määrittäkää React peer-riippuvuudeksi, ottakaa sivuvaikutukseton tree shaking käyttöön ja testatkaa julkaistu paketti Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Peer-riippuvuudet ja tree shaking”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?

Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Kirjastojen paketointi Rollupilla ja tsupilla
  2. ESM- ja CJS-pakettien kaksoistuloste
  3. Peer-riippuvuudet ja tree shaking
  4. Julkaiseminen npm:ään ja semanttinen versiointi
← Takaisin: React Academy