Peer-riippuvuudet ja tree shaking
Määrittäkää React peer-riippuvuudeksi, ottakaa sivuvaikutukseton tree shaking käyttöön ja testatkaa julkaistu paketti
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.
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
- Kirjastojen paketointi Rollupilla ja tsupilla
- ESM- ja CJS-pakettien kaksoistuloste
- Peer-riippuvuudet ja tree shaking
- Julkaiseminen npm:ään ja semanttinen versiointi