Come installare una versione esatta precedente di un pacchetto NPM?


917

Ho usato nvm per scaricare il nodo v0.4.10 e ho installato npm per lavorare con quella versione del nodo.

Sto cercando di installare express usando

npm install express -g

e ottengo un errore che esprime richiede la versione del nodo> = 0,5,0.

Bene, questo è strano, dal momento che sto seguendo le indicazioni per un nodo + esprimere + MongoDB esercitazione qui quella utilizzata nodo v0.4.10, quindi presumo espressa è / era disponibile al nodo v0.4.10. Se la mia ipotesi è corretta, come posso dire a npm di recuperare una versione che funzionerebbe con la mia configurazione?


7
Perché non aggiorni solo la versione del tuo nodo? Abbastanza sicuro ci dovrebbero essere molte più buone aggiunte rispetto al comportamento rotto che troverai.
Fabrício Matté,

1
A volte non è un'opzione. Se ha usato nvm per il downgrade, potrebbe esserci un motivo, ad esempio un altro gruppo che controlla la versione del nodo eseguibile che deve usare.
fool4jesus,

Risposte:


1584

Se devi installare una versione precedente di un pacchetto, specificalo

npm install <package>@<version>

Per esempio: npm install express@3.0.0

È inoltre possibile aggiungere il --saveflag a quel comando per aggiungerlo alle dipendenze package.json o --save --save-exactflag se si desidera la versione esatta specificata nelle dipendenze package.json.

Il installcomando è documentato qui: https://docs.npmjs.com/cli/install

Se non sei sicuro di quali versioni di un pacchetto siano disponibili, puoi utilizzare:

npm view <package> versions

E npm viewpuò essere utilizzato anche per visualizzare altre cose su un pacchetto. https://docs.npmjs.com/cli/view


4
Credo che questo sarà installare la versione principale più vicino che le partite, quindi potrebbe non essere quello che ci si aspetta stackoverflow.com/a/22345808/1074400
Aakil Fernandes

2
@AakilFernandes se si specifica una versione esatta, verrà installata una versione esatta. Se si specifica un intervallo di versioni semantico, è possibile che si ottenga una corrispondenza non esatta. Non c'è nulla di unico nel comando di installazione al riguardo.
Bret Copeland,

6
npm view <package> versions -jsonper vedere ogni singola versione, evitando i puntini di sospensione alla fine di un elenco con molte versioni.
TheDarkIn1978,

5
Se lo usi npm install express@3.0.0, non otterrai la versione esatta 3.0.0, otterrai l'ultima versione 3.xx. Per ottenere la versione specifica, devi usare npm install express@3.0.0 --save-exact. Vedi questo post sul blog: 60devs.com/npm-install-specific-version.html
Patrick Hund,

5
@PatrickHund no, npm install express@3.0.0otterrai esattamente la versione 3.0.0. npm install express@^3.0.0ti procurerebbe gli ultimi 3.xx --save-exactinfluisce sul modo in cui è scritto in pacchetti.json, che ho già trattato nella mia risposta. Inoltre, --save-exactdeve essere utilizzato in combinazione con uno --saveo --save-dev- non è sufficiente usarlo da solo.
Bret Copeland,

94

È abbastanza facile Scrivi questo, ad esempio:

npm install -g npm@4.6.1

O:

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

1
Grazie per i tag lateste nextversione!
Jimmy Adaro,

@inaps potresti aggiungere una nota che il -gflag è specifico per i pacchetti che vuoi installare a livello globale poiché molti utenti accedono a questa pagina e semplicemente copiano / incollano senza rendersi conto di come stanno per avere un impatto sul loro ecosistema di pacchetti. Siamo stati tutti "quel ragazzo"
Jacksonkr il

73

Prima rimuovi la vecchia versione, quindi esegui letteralmente quanto segue:

npm install express@3.X

e per stabile o recente

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

12
È letterale Xo stand-in per un numero di versione numerico?
Keith Thompson,

7
Quella era una o / o domanda, non una domanda sì / no. Ci ho provato npm install express@3.Xe sembrava funzionare. È una caratteristica o un incidente del modo in cui npmanalizza il numero di versione?
Keith Thompson,

3
@KeithThompson Sì, lo è! Hehe, sto solo scherzando ... È il modo in cui lo npmanalizza, vedi: docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-
gonz,

3
@gonz: Quindi è letterale X.
Keith Thompson,

1
Volevo solo capire perché ha funzionato per te. Non conosco l'intenzione originale di Saurabh o cosa stai cercando di fare. 3.X significherebbe> = 3.0 e <4.0.
gonz,

41

Secondo me è il modo più semplice e veloce:

$ npm -v

4.2.0

$ npm install -g npm@latest-3

...

$ npm -v

3.10.10


2

puoi aggiornare il tuo pacchetto npm usando questo comando:

npm install <package_name>@<version_number>

esempio: npm install yargs@12.02


1

Ho un modo generale per risolvere questo tipo di problemi, che potrebbe anche essere utile, specialmente quando si clonano repository per eseguirli localmente, ma richiede un po 'più di analisi delle versioni.

Con il pacchetto npm-check-updatesverifico le versioni dei pacchetti (secondo il file package.json) che non sono dichiarate nelle loro ultime versioni disponibili, come mostrato nella figura ( https://www.npmjs.com/package/npm-check -aggiornamento ):

inserisci qui la descrizione dell'immagine

Con queste informazioni possiamo verificare lo stato di aggiornamento dei diversi pacchetti e prendere decisioni su quali pacchetti aggiornare / degradare e quali no.

Supponendo che abbiamo deciso di aggiornare tutti i pacchetti così come sono elencati, possiamo usare il ncu -ucomando che modifica solo il tuo file package.json. Correrenpm install per aggiornare i pacchetti installati e package-lock.json.

Quindi, a seconda dei requisiti del repository, possiamo perfezionare ciò che è necessario, installando le versioni specifiche con npm view <package> versionse npm install <package>@<version>


1

npm install -g npm@version

in cui si desidera effettuare il downgrade

npm install -g npm@3.10.10


ma se ne ho bisogno localmente? devo mettere --save?
AlexNikonov,

Sì, hai anche tu ... scaricherà il pacchetto localmente.
Lakshay Sharma,

@AlexNikonov ommit the -g(per l'installazione globale, quindi atterra nella directory del tuo progetto attuale /node_modules) e sì, --saveo --save-devper ottenere una vocepackage.json
Frank Nocke,

0

È possibile utilizzare il comando seguente per installare una versione precedente di un pacchetto npm:

npm install packagename@version


-3

Su Ubuntu puoi provare questo comando.

sudo npm cache clean -f
sudo npm install -g n
sudo n stable 

Versione specifica: sudo n 8.11.3 anziché sudo n stable

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.