Per offrirti un'esperienza di navigazione sempre migliore, questo sito utilizza cookie propri e di terze parti, partner selezionati. I cookie di terze parti potranno anche essere di profilazione.
Le tue preferenze si applicheranno solo a questo sito web. Puoi modificare le tue preferenze in qualsiasi momento ritornando su questo sito o consultando la nostra informativa sulla riservatezza.
E' possibile rivedere la nostra privacy policy cliccando qui e la nostra cookie policy cliccando qui.
Per modificare le impostazioni dei cookies clicca qui
  • seguici su feed rss
  • seguici su twitter
  • seguici su linkedin
  • seguici su facebook
  • cerca

SEI GIA' REGISTRATO? EFFETTUA ADESSO IL LOGIN.



ricordami per 365 giorni

HAI DIMENTICATO LA PASSWORD? CLICCA QUI

NON SEI ANCORA REGISTRATO ? CLICCA QUI E REGISTRATI !

NPM: cos'è, come utilizzarlo e come installare un modulo a livello locale o globale

di :: 01 ottobre 2020
NPM: cos'è, come utilizzarlo e come installare un modulo a livello locale o globale

In un articolo precedente ci siamo occupati dell'installazione di Node.js, un framework utilizzato per scrivere applicazioni in Javascript lato server.

Node.js vive grazie alle migliaia di librerie (moduli) javascript scaricabili grazie allo strumento NPM, il Node Package Manager, che, dopo l'installazione di Node.js, abbiamo a nostra disposizione.

NPM consente di scaricare ed installare i moduli con un semplice comando.

Cercare un modulo

Tutti i moduli sono pubblicati nel sito web www.npmjs.com

Il sito web NPM

Su questo sito sono disponibili migliaia di moduli ed è possibile cercare il modulo di cui abbiamo bisogno per il nostro progetto dalla barra di ricerca del sito.

Ad esempio, abbiamo bisogno di intallare la libreria GULP, noto toolkit JavaScript che ci aiuta ad automatizzare e semplificare il nostro sviluppo di un sito web lato frontend, come ad esempio nella minificazione dei file css e js e nella ottimizzazione delle immagini.

Indicherò nella barra di ricerca "gulp" e verranno visualizzate tutte le librerie disponibili.

L'alternativa al sito è lo strumento da riga di comando di NPM.

Apriamo il nostro terminale e digitiamo

# npm search gulp

Otteniamo la lista di librerie disponibili.

Tra queste ci interessa gulp-cli, cioè l'interfaccia da riga di comando di gulp.

Installazione di un modulo a livello locale

Con una installazione locale, il pacchetto verrà installato, e potrà essere utilizzato, solo nella directory di lavoro corrente.

Posizioniamoci della cartella del nostro progetto, ad esempio la cartella "miosito"

# cd /var/www/html/miosito

Ogni progetto necessita di un file chiamato "package.json" che contiene varie informazioni tra cui il nome del progetto, la sua versione e le sue dipendenze.

Come prima cosa, per creare questo file, inizializziamo il progetto digitando

# npm init

II risultato sarà una interazione in cui dobbiamo fornire alcune informazioni relative al progetto, ad esempio il nome del progetto (se non indichiamo nulla il nome sarà il nome della directory che lo contiene). Lasciamo tutte le impostazioni di default e alla fine digitiamo "yes"

[root@vas100 miosito]# npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help init` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (miosito)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /var/www/miosito/package.json:

{
  "name": "miosito",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}


Is this OK? (yes) yes

Il file "package.json" è stato creato. Questo il suo contenuto

{
  "name": "miosito",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Adesso, sempre nella cartella "miosito", possiamo procedere ad installare il pacchetto scelto

# npm install nomepacchetto

dove al posto di "nomepacchetto" indichiamo il pacchetto scelto, nel nostro esempio "gulp-cli"

# npm install gulp-cli

L'output sarà

.................
+ gulp-cli@2.3.0
added 255 packages from 166 contributors and audited 255 packages in 3.9s

13 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

Nella cartella "miosito" è stata creata una nuova cartella chiamata "node_modules" dove è stato scaricato il modulo e le sue dipendipenze.

Inoltre è stato modificato il file "package.json", apriamolo e vediamo che è stata aggiunta la dipendenza "gulp-cli" appena installata, quindi viene indicato espressamente che questo progetto necessita del pacchetto "gulp-cli" nella versione 2.3.0, per funzionare.

{
  "name": "miosito",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "gulp-cli": "^2.3.0"
  }
}

Bene, il pacchetto è installato e pronto all'uso (se ti interessa, a breve pubblicherò un articolo dedicato a GULP).

Installazione di un modulo a livello globale

Se avessi bisogno di utilizzare il pacchetto installato (GULP) in più progetti, e non solo in "miosito", è preferibile installare il modulo non a livello locale, bensì globale, aggiungendo l'opzione "-g" al comando di installazione

# npm install gulp-cli -g

Così facendo il modulo sarà utilizzabile in qualunque progetto / cartella del nostro server.

Aggiornamento dei moduli

Per aggiornare i moduli installati è sufficiente digitare

# npm update

NPM verificherà se ci sono nuove versioni dei moduli, aggiornerà quelli installati sulla tua macchina (facendo attenzione a rispettare la compatibilità) e cancellerà le vecchie versioni.

Numero di versione dei moduli e delle dipendenze

Nel file "package.json" abbiamo visto come sia indicato come versione del progetto la "1.0.0" e tra le dipendenze il modulo "gulp-cli" la cui versione è la "^2.3.0"

Vediamo come leggere questo numero di versione. Divisi dal punto abbiamo

  • Un numero di versione maggiore
    Si inizia con la versione "1". Questo numero cambia solo quando l’applicazione ha avuto una grossa modifica. Nel nostro esempio siamo giunti alla versione maggiore "2"
    Si potrebbe anche partire dalla versione "0" quando il progetto non è ancora in produzione.
  • Un numero di versione minore
    Questo numero cambia ogni volta che l’applicazione subisce piccole modifiche.
    Nel nostro esempio siamo giunti alla versione minore "3"
  • Un numero di patch
    Questo numero viene cambiato per ogni piccolo bug o errore che è stato corretto. Le caratteristiche dell’app rimangono le stesse tra le patch. Ѐ importante principalmente per le ottimizzazione e le correzioni inevitabili.
    Nel nostro esempio il numero di patch "0" cioè non sono state apportate modifiche per bug o errori.

Se guardiamo bene nel file "package.json", la versione della dipendenza è preceduta da un tilde "^", cioè "^2.3.0"

Questo significa che il nostro progetto può funzionare non solo con la versione 2.3.0, ma anche con gli aggiornamenti delle patch cioè con le versioni 2.3.1, 2.3.2, 2.3.3, ecc. ma non quelle superiori come ad esempio la 2.4.0.

Per cui se il pacchetto "gulp-cli" viene aggiornato ad esempio alla versione "2.3.2", se scarico gli aggiornamenti con "npm update" verrà scaricato l'aggiornamento.

Se invece non ci fosse stato il tilde, cioè fosse stato indicato semplicemente "2.3.0", il nostro progetto potrà usare solo questa versione del pacchetto "gulp-cli" e se procedo con "npm update" non verrà scaricato l'eventuale aggiornamento del pacchetto "gulp-cli"

Creazione di un modulo

I moduli NPM vengono creati da sviluppatori di tutto il mondo. Chiunque può creare un modulo e pubblicarlo sul server NPM.

Ogni modulo avrà il suo file "package.json" che conterrà il nome del modulo, la sua attuale versione e le eventuali dipendenze.

Se creiamo un modulo, partiamo, secondo quanto abbiamo indicato nel paragrafo precedente, con la versione "0.1.0", per cui il file "package.json" conterrà questa riga

"version": "1.0.0",

Lo sviluppo del modulo comporterà la modifica del numero di versione nel file "package.json"

  • Se correggo un bug, l’applicazione passerà versione 1.0.1
  • Se miglioro in modo significativo la mia applicazione, si trasformerà in versione 1.1.1, poi 1.2.1 e così via.
  • Il giorno in cui deciderò che ha raggiunto un importante punto di svolta ed è ormai matura, andrò a trasformare il progetto nella versione 2.0.0

Creato il nostro primo pacchetto, vediamo come pubblicarlo su NPM

Innanzitutto dobbiamo creare un account su NPM, o direttamente sul sito www.npmjs.com cliccando sul pulsante di registrazione "signup", oppure da riga di comando digitando

# npm adduser

Ti verrà chiesta una username, una password e una email (che verrà resa pubblica)

Indica questi dati et woilà, l'account è creato. Se andiamo sul sito NPM possiamo loggarci, ma non ancora pubblicare.

Riceverai una email all'indirizzo indicato, con un link per confermare l'indirizzo e-mail. Solo a seguito di tale conferma potremmo pubblicare i nostri pacchetti.

Bene, adesso prepariamoci alla pubblichazione del nostro progetto.

Nella directory del progetto, ad esempio la cartella "mioprogetto", deve esserci

  • un file "package.json" che descrive il modulo, al cui interno abbiamo indicato come "name" del progetto "mioprogetto" (potevamo un nome qualunque)
  • un file "README.md" (scritto in markdown) che descrive in modo più dettagliato il modulo

Posizioniamoci nella cartella

# cd /var/www/html/mioprogetto

e lanciamo il comando

# npm publish

Tutto qui: il package è adesso presente su NPM

Considerando che questa è solo una prova, cancelliamo il pacchetto inviato, con il comando

# npm unpublish <package-name> -f

E con questo abbiamo ultimato la presentazione di NPM.

Rimandiamo alla documentazione ufficiale per ulteriori approfondimenti.

Approfondimenti

Potrebbe interessarti

 
 
 
 
pay per script

Hai bisogno di uno script PHP personalizzato, di una particolare configurazione su Linux, di una gestione dei tuoi server Linux, o di una consulenza per il tuo progetto?

x

ATTENZIONE