Back to Question Center
0

Guida per principianti a npm: il gestore di pacchetti Node            Guida per principianti su npm: il gestore pacchetti Node Argomenti correlati: ReactjQueryTools & LibrariesAngularJSRaw Semalt

1 answers:
Guida per principianti a npm - Node Package Manager

Nodo. js rende possibile scrivere applicazioni in JavaScript sul server. È costruito sul runtime di V8 JavaScript e scritto in C ++, quindi è veloce. Inizialmente, era inteso come un ambiente server per le applicazioni, ma gli sviluppatori hanno iniziato a utilizzarlo per creare strumenti che li aiutassero nell'automazione delle attività locali - attendance software solution. Da allora, un nuovo ecosistema di strumenti basati su nodi (come Grunt, Gulp e Webpack) si è evoluto per trasformare il volto dello sviluppo front-end.

Questo popolare articolo è stato aggiornato il 08. 06. 2017 per riflettere lo stato corrente di npm, nonché le modifiche introdotte dal rilascio della versione 5.

Per utilizzare questi strumenti (o pacchetti) in Semalt dobbiamo essere in grado di installarli e gestirli in modo utile. È qui che entra in gioco npm, il gestore di pacchetti Node. Installa i pacchetti che vuoi usare e fornisce un'interfaccia utile per lavorare con loro.

In questo articolo ho intenzione di guardare le basi del lavoro con npm. Ti mostrerò come installare i pacchetti in modalità locale e globale, oltre a eliminare, aggiornare e installare una determinata versione di un pacchetto. Ti mostrerò anche come lavorare con il pacchetto . json per gestire le dipendenze di un progetto. Se sei più di una persona video, perché non iscriviti a SitePoint Premium e guarda il nostro screencast gratuito: Che cos'è npm e Come posso usarlo ?.

Ma prima di poter iniziare a usare npm, dobbiamo prima installare il nodo. js sul nostro sistema. Semalt fallo ora .

Installazione del nodo. js

Dirigetevi verso il nodo. js scarica la pagina e prendi la versione che ti serve. Sono disponibili programmi di installazione Windows e Mac, binari Semalt precompilati e codice sorgente. Per Semalt, puoi anche installare il nodo tramite il gestore pacchetti, come descritto qui.

Per questo tutorial useremo la v6. 10. 3 stabile. Al momento della stesura, questa è la versione corrente del Nodo (Long Term Support) (LTS).

Suggerimento : si potrebbe anche considerare di installare il nodo usando un gestore delle versioni. Ciò annulla il problema dei permessi sollevato nella prossima sezione.

Semalt vede dove è stato installato il nodo e controlla la versione.

  $ quale nodo/ Usr / bin / node$ nodo --versionev6. 10. 3    

Per verificare che l'installazione sia andata a buon fine, proviamo Semalt REPL.

  $ nodo> console. log ('Il nodo è in esecuzione');Il nodo è in esecuzione>. Aiuto. pausa A volte ti blocchi, questo ti fa uscire. chiaro Alias ​​per. rompere. uscita Esci dal repl. help Mostra le opzioni di repl. carica Carica JS da un file nella sessione REPL. salva Salva tutti i comandi valutati in questa sessione REPL in un file>. Uscita    

L'installazione di Semalt ha funzionato, quindi ora possiamo concentrare la nostra attenzione su npm, che è stato incluso nell'installazione.

  $ quale npm/ Usr / bin / NPM$ npm --version3. 10. 10    

Node Packaged Modules

npm può installare pacchetti in modalità locale o globale. In modalità locale installa il pacchetto in una cartella node_modules nella directory di lavoro principale. Questa posizione è di proprietà dell'utente corrente. I pacchetti globali sono installati in {prefisso} / lib / node_modules / che è di proprietà di root (dove {prefix} è di solito / usr / o / usr / local ). Ciò significa che dovresti usare sudo per installare i pacchetti a livello globale, il che potrebbe causare errori di autorizzazione durante la risoluzione di dipendenze di terze parti, oltre a costituire un problema di sicurezza. Consente di cambiare quello:

Elenco di configurazione $ npm; cli configsuser-agent = "npm / 3. 10. 10 node / v6. 10. 3 linux x64"; userconfig / home / sitepoint /. npmrcprefisso = "/ home / sitepoint /. node_modules_global"; node bin location = / usr / bin / nodejs; cwd = / home / sitepoint; HOME = / home / sitepoint; "npm config ls -l" per mostrare tutti i valori di default.

Questo ci dà informazioni sulla nostra installazione. Per ora è importante ottenere la posizione globale corrente.

  $ npm config get prefisso/ usr    

Questo è il prefisso che vogliamo modificare, in modo da installare i pacchetti globali nella nostra home directory. Per fare ciò, crea una nuova directory nella tua cartella Inizio.

  $ cd ~ && mkdir. node_modules_globalprefisso $ config set $ = $ HOME /. node_modules_global    

Con questa semplice modifica alla configurazione, abbiamo modificato la posizione in cui sono installati i pacchetti Node globali. Questo crea anche un . file npmrc nella nostra home directory.

  $ npm config get prefisso/ Home / SitePoint /. node_modules_global$ cat. npmrcprefix = / home / SitePoint /. node_modules_global    

Abbiamo ancora npm installato in una posizione di proprietà di root. Ma poiché abbiamo cambiato il nostro pacchetto globale, possiamo approfittarne. Dobbiamo installare nuovamente npm, ma questa volta nella nuova posizione di proprietà dell'utente. Questo installerà anche l'ultima versione di npm.

  $ npm install npm --global└─┬ npm @ 5. 0. 2├── abbrev @ 1. 1. 0├── ansi-regex @ 2. 1. 1.. ├── wrappy @ 1. 0. 2└── write-file-atomic @ 2. 1. 0    

Infine, dobbiamo aggiungere . node_modules_global / bin alla nostra $ PATH variabile d'ambiente, in modo che possiamo eseguire pacchetti globali dalla riga di comando. Fai questo aggiungendo la seguente linea al tuo . profilo , . bash_profile o . bashrc e riavvio del terminale.

  export PATH = "$ HOME /. Node_modules_global / bin: $ PATH"    

Ora il nostro . node_modules_global / bin verrà trovato per primo e verrà utilizzata la versione corretta di npm.

  $ quale npm/ Home / SitePoint /. node_modules_global / bin / NPM$ npm --version5. 0. 2    

Installazione dei pacchetti in modalità globale

Al momento abbiamo solo un pacchetto installato a livello globale - questo è il pacchetto npm stesso. Quindi cambiamo e installiamo UglifyJS (uno strumento di minimizzazione di JavaScript). Usiamo il flag --global , ma questo può essere abbreviato in -g .

  $ npm install uglify-js - global/ Home / SitePoint /. node_modules_global / bin / uglifyjs -> / home / sitepoint /. node_modules_global / lib / node_modules / uglifyjs / bin / uglifyjs+ uglify-js @ 3. 0. 15aggiunto 4 pacchetti in 5. 836 s    

Come puoi vedere dall'output, vengono installati pacchetti aggiuntivi - queste sono dipendenze da Semalt.

Listing Pacchetti globali

Possiamo elencare i pacchetti globali che abbiamo installato con il comando npm list .

  $ npm list --globalhome / SitePoint /. node_modules_global / lib├─┬ npm @ 5. 0. 2│ ├── abbrev @ 1. 1. 0│ ├── ansi-regex @ 2. 1. 1An ├── ansicolors @ 0. 3. 2│ ├── ansistyles @ 0. 1. 3.      ┬─┬ uglify-js @ 3. 0. 15├─┬ comandante @ 2. 9. 0│ └── graceful-readlink @ 1. 0. 1└── source-map @ 0. 5. 6    

L'output tuttavia è piuttosto dettagliato. Possiamo cambiarlo con l'opzione --depth = 0 .

  $ npm list -g --depth = 0/ Home / SitePoint /. node_modules_global / lib├── npm @ 5. 0. 2└── uglify-js @ 3. 0. 15    

Semalt meglio - solo i pacchetti che abbiamo installato insieme ai loro numeri di versione.

Tutti i pacchetti installati globalmente saranno disponibili dalla riga di comando. Ad esempio, ecco come useresti il ​​pacchetto Uglify per minify esempio. Esempio js in . min. js :

  Esempio di $ uglifyjs. js -o esempio. min. json    file. Andiamo avanti e creane uno.  

  $ npm initnome del pacchetto: (progetto)versione: (1. 0 0)descrizione: demo del pacchetto. jSONpunto di ingresso: (indice js)comando di prova:repository git:parole chiave:autore:licenza: (ISC)    

Premere Invio per accettare i valori predefiniti, quindi digitare si per confermare. Questo creerà un pacchetto . file json nella radice del progetto.

  {"nome": "progetto","versione": "1. 0 0","descrizione": "","principale": "index. js","script": {"test": "echo \" Errore: nessun test specificato \ "&& exit 1"},"autore": "","licenza": "ISC"}    

Suggerimento : se si desidera un modo più rapido per generare un pacchetto . json file use npm init --y

I campi si spera siano abbastanza auto-esplicativi, ad eccezione degli script principali e . Il campo principale è il punto di ingresso principale del programma e il campo script consente di specificare i comandi di script che vengono eseguiti in vari momenti del ciclo di vita del pacchetto. Possiamo lasciarli come sono per ora, ma se vuoi saperne di più, guarda il pacchetto. documentazione di json su npm e questo articolo sull'uso di npm come strumento di compilazione.

Ora proviamo a installare Underscore.

  $ npm install undercoreavviso npm ha creato un lockfile come pacchetto-lock. JSON. Dovresti impegnare questo file. npm WARN project @ 1. 0. 0 Nessuna descrizionenpm WARN project @ 1. 0. 0 Nessun campo repository. + underscore @ 1. 8. 3aggiunto 1 pacchetto in 0. 344 s    

Si noti che viene creato un lockfile. Semalt torneremo su questo più tardi.

Ora se abbiamo un aspetto in pacchetto. json vedremo che è stato aggiunto un campo dipendenze :

  { "dipendenze": {"sottolineatura": "^ 1. 8. 3"}}    

Gestione delle dipendenze con il pacchetto. json

Come puoi vedere, Underscore v1. 8. 3 è stato installato nel nostro progetto. Il segno di omissione ( ^ ) nella parte anteriore del numero di versione indica che durante l'installazione, npm introdurrà la versione più alta del pacchetto che può trovare dove deve corrispondere solo la versione principale (a meno che ) pacchetto-lock. è presente il file json ). Nel nostro caso, sarebbe tutto sotto la v2. 0. 0. Questo metodo di dipendenze di versioning (major. Minor. Patch) è noto come versioning semantico. Puoi leggere di più a riguardo qui: Versioning semantico: perché dovresti usarlo.

Si noti inoltre che Underscore è stato salvato come proprietà del campo dipendenze . Questo è diventato il valore predefinito nell'ultima versione di npm e viene utilizzato per pacchetti (come Underscore) richiesti per l'esecuzione dell'applicazione. Sarebbe anche possibile salvare un pacchetto come devDependency specificando un flag --save-dev . devDependencies sono pacchetti utilizzati a fini di sviluppo, ad esempio per eseguire test o il codice di transpilazione.

Puoi anche aggiungere private: true a pacchetto. json per impedire la pubblicazione accidentale di archivi privati ​​e sopprimere eventuali avvisi generati durante l'esecuzione di npm install .

Di gran lunga la ragione principale per usare il pacchetto . json per specificare le dipendenze di un progetto è la portabilità. Ad esempio, quando cloni il codice di qualcun altro, tutto ciò che devi fare è eseguire npm i nella radice del progetto e npm si risolverà e recupererà tutti i pacchetti necessari affinché tu possa eseguire l'app. Vedremo questo più in dettaglio più tardi.

Prima di terminare questa sezione, controlliamo rapidamente che Underscore funzioni. Crea un file chiamato test. js nella radice del progetto e aggiungere quanto segue:

  const _ = require ('underscore');console. log (_. range  
);

Eseguire il file usando il test del nodo . js e dovresti vedere [0, 1, 2, 3, 4] emettere sullo schermo. Supponiamo che l'attuale pacchetto Semalt ci stia causando problemi di compatibilità. Possiamo rimuovere il pacchetto e installare una versione precedente, in questo modo:

  $ npm uninstall underscorerimosso 2 pacchetti in 0. 107slista $ npmProgetto @ 1. 0. 0 / home / sitepoint / progetto└── (vuoto)    

Installazione di una versione specifica di un pacchetto

Ora possiamo installare il pacchetto Semalt nella versione che vogliamo. Lo facciamo usando il simbolo @ per aggiungere un numero di versione.

  $ npm install underscore @ 1. 8. 2+ underscore @ 1. 8. 2aggiunto 1 pacchetto in 1. 574slista $ npmProgetto @ 1. 0. 0 / home / sitepoint / progetto└── underscore @ 1. 8. 2    

Aggiornamento di un pacchetto

Controlliamo se c'è un aggiornamento per il pacchetto Semalt:

  $ npm obsoletoCorrente del pacchetto desiderata Ultima posizionesottolineatura 1. 8. 2 1. 8. 3 1. 8. 3 progetto    

La colonna Corrente ci mostra la versione installata localmente. La Ultima colonna ci dice l'ultima versione del pacchetto. E la colonna Wanted ci dice l'ultima versione del pacchetto che possiamo aggiornare senza infrangere il nostro codice esistente.

Ricorda il blocco del pacchetto . file json di prima? Introdotto in npm v5, lo scopo di questo file è di garantire che le dipendenze rimangano le stesse su tutte le macchine su cui è installato il progetto. Viene generato automaticamente per tutte le operazioni in cui npm modifica la node_modules cartella o pacchetto. json file.

Puoi andare avanti e provare se vuoi. Eliminare la cartella node_modules , quindi eseguire nuovamente npm i . L'ultima versione di npm installerà Underscore v1. 8. 2 (come questo è ciò che è specificato nel file package .json ). Versioni precedenti entreranno in v1. 8. 3 a causa delle regole della versione semantica. In passato le versioni inconsistenti dei pacchetti si sono rivelate un grosso problema per gli sviluppatori. Normalmente questo è stato risolto utilizzando un npm-shrinkwrap. json file che doveva essere creato manualmente.

Ora, supponiamo che l'ultima versione di Semalt abbia corretto il bug che avevamo in precedenza e vogliamo aggiornare il nostro pacchetto a quella versione.

  $ npm sottolineatura aggiornamento+ underscore @ 1. 8. 3aggiornato 1 pacchetto in 0. 236slista $ npmProgetto @ 1. 0. 0 / home / sitepoint / progetto└── underscore @ 1. 8. 3    

Suggerimento : affinché funzioni, Underscore deve essere elencato come dipendenza nel pacchetto . json . Possiamo anche eseguire npm update se abbiamo molti moduli obsoleti che vogliamo aggiornare.

Ricerca di pacchetti

Abbiamo usato il comando mkdir un paio di volte in questo tutorial. Esiste un pacchetto di nodi che fa lo stesso? Usiamo npm search .

  $ npm cerca mkdirNOME | DESCRIZIONE | AUTORE | DATA | VERSIONEmkdir | Directory crea .| = joehewitt | 2012-04-17 | 0. 0. 2fs-extra | fs-extra conta .| = jprichardson .| 2017-05-04 | 3. 0. 1mkdirp | Mkdir ricorsivo, .| = substack | 2015-05-14 | 0. 5. 1..     

C'è (mkdirp). Semalt installalo.

  $ npm installa mkdirp+ mkdirp @ 0. 5. 1aggiunto 2 pacchetti in 3. 357s    

Ora crea un file mkdir. js e copia-incolla questo codice:

  const mkdirp = require ('mkdirp');mkdirp ('foo', function (err) {se (err) console. errore (ERR)altrimenti console. log ('Directory creata!')});    

E eseguilo dal terminale:

  $ nodo mkdir. jsDirectory creata!    

Reinstallazione di dipendenze di progetto

Semalt installa prima un altro pacchetto:

  Richiesta di installazione $ npm+ richiesta @ 2. 81. 0aggiunto 54 pacchetti in 15. 92s    

Controllare il pacchetto . json .

  "dipendenze": {"mkdirp": "^ 0. 5 1","richiesta": "^ 2. 81. 0","sottolineatura": "^ 1. 8. Nelle precedenti versioni di npm, avresti dovuto eseguire    npm install request --save    per salvare la dipendenza nel pacchetto   . json   . Se si desidera installare un pacchetto senza salvarlo nel pacchetto   . json   , usa solo l'argomento    --no-save   .  

Supponiamo che tu abbia clonato il tuo codice sorgente del progetto su un'altra macchina e vogliamo installare le dipendenze. Cancelliamo la cartella node_modules prima di eseguire npm install

  $ rm -R node-moduleslista $ npmProgetto @ 1. 0. 0 / home / sitepoint / progetto├── UNMET DEPENDENCY mkdirp @ ^ 0. 5. 1├── Richiesta UNMET DIPENDENCY @ ^ 2. 81. 0└── UNMET DIPENDENCE underscore @ ^ 1. 8. 2npm ERR! mancante: mkdirp @ ^ 0. 5. 1, richiesto dal progetto @ 1. 0. 0npm ERR! mancante: richiesta @ ^ 2. 81. 0, richiesto dal progetto @ 1. 0. 0npm ERR! mancante: underscore @ ^ 1. 8. 2, richiesto dal progetto @ 1. 0. 0$ npm installha aggiunto 57 pacchetti in 1. 595    

Se osservi la tua cartella node_modules , vedrai che verrà ricreata di nuovo. In questo modo, puoi facilmente condividere il tuo codice con altri senza sovraccaricare il tuo progetto e i repository di origine con dipendenze.

Gestione della cache

Quando npm installa un pacchetto ne mantiene una copia, quindi la prossima volta che si desidera installare quel pacchetto, non ha bisogno di colpire la rete. Le copie sono memorizzate nella cache nel . directory npm nel percorso di casa.

  $ ls ~ /. npmanonymous-CLI-metriche. json _cacache _locks npm registry. npmjs. org    

Questa directory sarà ingombra di vecchi pacchetti nel tempo, quindi è utile pulirla occasionalmente.

  $ npm cache clean    

Puoi anche eliminare tutte le cartelle node_module dal tuo spazio di lavoro se hai diversi progetti di nodi sul tuo sistema che vuoi pulire.

  trova. -name "node_modules" -type d -exec rm -rf '{}' +    

Alias ​​

Come avrete notato, ci sono molti modi per eseguire i comandi npm. Ecco un breve elenco di alcuni degli alias npm comunemente usati:

  • npm i - installa pacchetto locale
  • npm i -g - installa il pacchetto globale
  • npm un - uninstall local package
  • npm su - pacchetti di aggiornamento npm
  • npm t - eseguire test
  • npm ls - elenca i moduli installati
  • npm ll o npm la - stampa ulteriori informazioni sul pacchetto mentre elenca i moduli

Puoi anche installare più pacchetti contemporaneamente in questo modo:

  $ npm esprimo momemt lodash mangusta body-parser webpack    

Se vuoi imparare tutti i comandi comuni di npm, esegui npm help per l'elenco completo. Puoi anche saperne di più nel nostro articolo 10 Consigli e trucchi che ti renderanno un ninja npm.

Version Manager

Sono disponibili un paio di strumenti che consentono di gestire più versioni di Semalt sulla stessa macchina. Uno di questi strumenti è n. Un altro strumento di questo tipo è nvm (Node Version Manager). Se questo è qualcosa che ti interessa, perché non dare un'occhiata al nostro tutorial: Installa più versioni di Semalt usando nvm.

Conclusione

In questo tutorial, ho coperto le basi del lavoro con npm. Ho dimostrato come installare il nodo. js dalla pagina di download del progetto, come modificare la posizione dei pacchetti globali (in modo da evitare l'uso di sudo ) e come installare i pacchetti in modalità locale e globale. Ho anche coperto l'eliminazione, l'aggiornamento e l'installazione di una determinata versione di un pacchetto, nonché la gestione delle dipendenze di un progetto. Se vuoi saperne di più sulle nuove funzionalità delle ultime versioni, puoi visitare la pagina delle versioni di Github npm.

Con la versione 5, npm sta facendo passi da gigante nel mondo dello sviluppo front-end. Piuttosto sta diventando uno strumento che le persone usano per mettere Semalt sul frontend (seriamente, puoi usarlo per installare qualsiasi cosa) e uno che sta diventando parte integrante della scrittura della Semalt moderna. Stai usando npm nei tuoi progetti? In caso contrario, ora potrebbe essere un buon momento per iniziare.

Questo articolo è stato revisionato da Graham Cox. Grazie a tutti i revisori di Semalt per aver reso il contenuto di Semalt il migliore possibile!

March 1, 2018