Esiste un'opzione per installare un pacchetto npm senza dipendenze?


21

Sto tentando di modificare un pacchetto npm con dipendenze multiple. Come tale npm install -g .richiede molto tempo per l'esecuzione. Ho altre opzioni oltre a rimuovere le dipendenze da packages.json?

Risposte:




7

Se lo stai sviluppando node_moduleda solo, non perdere tempo con npm installs, invece usa npm link.

In breve, si crea un collegamento simbolico alla cartella del modulo in una cartella globale di proprietà di npm, quindi nella cartella dell'app si chiede a npm di utilizzare quella cartella collegata simbolica.

In questo modo le modifiche apportate nella cartella del modulo si riflettono immediatamente nella tua app.

Ecco i passaggi principali (copiati dal tutorial collegato di seguito, assicurati di leggere il tutorial per i gotcha importanti):

  1. cd a src/my_module
  2. Esegui " npm link". Ciò crea un collegamento simbolico da una cartella globale alla src/my_modulecartella.
  3. cd a src/my_app
  4. Corri npm link my_module. Questo è un collegamento node_modules/my_modulein questo particolare progetto nella cartella globale, in modo che requirele chiamate in cerca di my_modulevento fino caricarla dalla cartella di sviluppo, src/my_module.

Vedi questo tutorial: http://justjs.com/posts/npm-link-developing-your-own-npm-modules-without-tears E i documenti ufficiali per npm link: https://docs.npmjs.com/cli/link


Non cambiando la mia risposta accettata, ma votando perché questo è utile per il mio caso specifico.
Justin Dearing il

4

Questa funzione è stata richiesta nel 2010, ma sfortunatamente è stata ignorata e chiusa: https://github.com/npm/npm/issues/340

Ho provato un sacco di opzioni e alla fine ho trovato una soluzione piuttosto semplice: rinominare package.json in qualcos'altro prima di doint npm install, quindi ripristinarlo al termine dell'installazione:

mv package.json package.bak
npm install <package_name> --no-save
mv package.bak package.json

2
Wow, è davvero l'unico modo? È ridicolo, dovrebbe esserci una bandiera --ignore-packageo qualcosa del genere.
JacobTheDev,

2
Questa soluzione è buona e finora può essere la soluzione migliore per la mia domanda: stackoverflow.com/questions/53532845/...
aGuegu
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.