Articles

hur man NPM länk till en lokal version av ditt beroende

låter göra detta.

Så… jag vill skapa en lokal version av moment för min kalender webapp.

varför?

eftersom moment inkluderar inte Klingon-representationer av tid. Eller Borg för den delen. Vilken typ av ett allomfattande tidspaket omfattar inte främmande kulturer!?

TL; DR: klona paketet lokalt någonstans, npm installera dess deps, npm linkvid dess rot, gå sedan tillbaka till din prickiga app som använder moment, vid rottyp npm link "moment"& du använder nu den lokala versionen. Jag kunde inte få garnlänkar till jobbet. Inte säker på varför.

höger …

jag överger garn i denna förklaring eftersom jag inte kunde få samma funktionalitet att arbeta med det som NPM. Så hur som helst, här går:

Jag vill ha två mappar att fokusera på.

my-calendar-app/node_modules/moment

och

Users/aid/desktop/local-modules/

då jaggit clone... paketet jag vill redigera / förbättra, *i* mappen local-modules.

När jag är i det kör jag npm install för att säkerställa att jag har alla rätt beroenden och config för det (babelrc, webpack, dev och regelbundna beroenden).

i den lokala går jag in i moment.js eller vad som helst postfilen är. Och högst upp satte jag en konsol.logga in, bara för att visa att vi använder den lokala / Klingon-vänliga:

Users / aid / Desktop / local_modules / ögonblick / ögonblick.js

cd (I terminal) i din nya, lokala moduler/moment paket dir och vid dess rot, typ npm link. För att vara tydlig: det här länkar du en lokal, klonad, något förändrad version av ett npm-paket.

så vi har skapat en indexlänk till det här lokala paketet. Terminalbekräftelsen för min ser ut så här:

efter att ha skrivit npm-länken i det nya, lokala paketet.

navigera nu tillbaka till ditt huvudprojekt och på rotnivå, berätta att du vill använda den lokala versionen: –

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

som spottar ut en bekräftelse på att du mappar till en lokal 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 säger i princip”när jag pekar på node_modules för tillfället, rot till dina npm — länkar, för den här versionen av node-och peka på den här lokala versionen/paketet av det”.

Nu när vi kör vår app:

Chrome-konsolen / konsolen.loggar visas.

det spottar ut konsolen.loggar / ändringar vi gjort lokalt.

för att döda länken, Gå tillbaka till din lokala version och vid rottypnpm unlink --no-save moment. Kör sedan npm install.

Yay för npm länkar. Yay för Des Lynham.