Articles

sådan NPM Link til en lokal version af din afhængighed

div >

lad os gøre dette.

så… jeg vil oprette en lokal version afmoment til min kalenderapp.

hvorfor?

fordimoment inkluderer ikke Klingon-repræsentationer af tid. Eller Borg for den sags skyld. Hvilken slags altomfattende tidspakke omfavner ikke fremmede kulturer!?

TL; DR: klon pakken lokalt et eller andet sted, npm installer dens deps, npm link ved dens rod, og gå derefter tilbage til din prangende app, der bruger moment, ved rodtype npm link "moment"& du bruger nu den lokale version. Jeg kunne ikke få garn links til at arbejde. Ikke sikker på hvorfor.

højre…

jeg opgiver garn i denne forklaring, fordi jeg ikke kunne få den samme funktionalitet til at arbejde med det som NPM. Så alligevel går her:

Jeg vil have to mapper til at fokusere på.

my-calendar-app / node_modules / moment

og

brugere/aid/desktop/local-modules/

git clone... pakken jeg vil redigere / forbedre, *i* mappen local-modules.

Når jeg er i det, kører jeg npm install for at sikre, at jeg har alle de rigtige afhængigheder og config til det (babelrc, netpakke, dev og regelmæssige afhængigheder).

i den lokale går jeg ind i moment.js eller hvad indgangsfilen er. Og lige øverst sætter jeg en konsol.log ind, bare for at vise, at vi bruger den lokale / Klingon-venlige:

brugere/hjælp/Desktop/local_modules/øjeblik/øjeblik.js

cd (i terminal) i din nye, lokale moduler/moment pakke dir og ved sin rod, skriv npm link. For at være klar: dette forbinder du en lokal, klonet, lidt ændret version af en npm-pakke.

så vi har oprettet et indekslink til denne lokale pakke. Terminalbekræftelsen for min ser sådan ud:

efter at have skrevet npm-link i den nye, lokale pakke.

Naviger nu tilbage til dit hovedprojekt, og på rodniveau, fortæl det, at du vil bruge den lokale version:-

cd /Users/aid/Projects/my-calendar-app && npm link "moment"

der spytter en bekræftelse på, at du kortlægger til et lokalt modul:

Users/aid/Projects/my-calendar-app/node_modules/moment -> aid/.nvm/versions/node/v10.15.0/lib/node_modules/moment -> /Users/aid/Desktop/local-packages/moment

det siger dybest set “når jeg peger på node_modules for øjeblikket, rod til dine npm — links, for denne version af node-og peger på denne lokale version / pakke af den”.

nu når vi kører vores app:

Chrome-konsollen / konsollen.logfiler vises.

det spytter konsollen ud.logs / ændringer, Vi har foretaget lokalt.

for at dræbe linket skal du gå tilbage til din lokale version og ved rodtypenpm unlink --no-save moment. Kør derefter npm install.

Yay for NPM links. Yay til Des Lynham.