Articles

Come NPM Link per una versione locale della vostra dipendenza

Consente di fare questo.

Quindi want voglio creare una versione locale dimoment per la mia webapp del calendario.

Perché?

Perchémoment non include rappresentazioni Klingon del tempo. O Borg, del resto. Che tipo di pacchetto di tempo all-inclusive non abbraccia le culture straniere!?

Il TL; DR: clona il pacchetto localmente da qualche parte, npm installa i suoi dep, npm link alla sua radice, quindi torna alla tua app appariscente che usa moment, al tipo root npm link "moment"& ora stai usando la versione locale. Non sono riuscito a far funzionare i link dei filati. Non so perché.

Destra Right

Sto abbandonando Yarn in questa spiegazione perché non ho potuto ottenere la stessa funzionalità per lavorare con esso come NPM. Quindi, ad ogni modo, ecco:

Voglio due cartelle su cui concentrarmi.

my-calendar-app/node_modules/moment

e

Users/aid/desktop/local-modules/

Poi hogit clone... il pacchetto che voglio modificare / migliorare, *nella* cartella local-modules.

Una volta che ci sono dentro, eseguo npm install per assicurarmi di avere tutte le dipendenze e la configurazione giuste per questo (babelrc, webpack, dev e dipendenze regolari).

In quello locale, vado in moment.js o qualunque sia il file di immissione. E proprio in alto ho messo una console.accedi, solo per mostrare che stiamo usando quello locale / Klingon-friendly:

Utenti/aiuto/Desktop/local_modules/momento/momento.js

cd(nel terminale) nel tuo nuovo, moduli locali/momento pacchetto dir e alla sua radice, digitarenpm link. Per essere chiari: questo è il collegamento di una versione locale, clonata, leggermente modificata di un pacchetto npm.

Quindi abbiamo creato un link indice a questo pacchetto locale. La conferma terminale per il mio assomiglia a questo:

dopo aver digitato npm link in un nuovo pacchetto locale.

Ora torna al tuo progetto principale e, a livello di root, digli che vuoi usare la versione locale:-

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

Che sputa una conferma che stai mappando a un modulo locale:

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

Questo è fondamentalmente dicendo “Quando sto puntando a node_modules per il momento, root ai tuoi collegamenti npm, per questa versione di node — e punto a questa versione / pacchetto locale di esso”.

Ora possiamo eseguire la nostra app:

chrome console / console.vengono visualizzati i registri.

Sputa fuori la console.registri / modifiche apportate localmente.

Per eliminare il collegamento, tornare alla versione locale e digitare root npm unlink --no-save moment. Quindi eseguire npm install.

Yay per i collegamenti NPM. Evviva per Des Lynham.