Sommario

    Cosa è NPM?

    NPM sta per Node Package Manager ed è il package manager a riga di comando predefinito della community Node.js. Un package manager permette essenzialmente di organizzare, installare, riutilizzare e condividere dei pacchetti di codice. Ma cos’è Node.js e perché è importante utilizzare NPM?

    Cos’è Node.js

    È importante saper rispondere a queste domande perché talvolta si ha la netta impressione che molti sviluppatori, specie alle prime armi, non abbiano una perfetta consapevolezza di questi due termini.

    Node.js, o Node, è un ambiente runtime che consente principalmente lo sviluppo di applicazioni lato server sfruttando JavaScript, ma non è necessariamente ristretto a quest’unico ambito di utilizzo.

    Node, infatti, non è né un linguaggio di programmazione né un framework: è piuttosto un ambiente per la loro esecuzione. Installando Node possiamo sfruttare la potenza di JavaScript tanto per applicazioni presenti sul nostro PC quanto per la gestione del back end di un sito su un server remoto.

    Il punto di svolta principale segnato da Node consiste proprio nella dilatazione dell’ambito di utilizzo di JavaScript che non viene più eseguito soltanto nel browser, ma anche su un server o su qualsiasi dispositivo su cui è stato installato Node.

    Installare NPM

    Installando Node installeremo anche NPM ed in questo modo avremo il comando npm disponibile sull’interfaccia a riga di comando del nostro sistema operativo (il Prompt dei Comandi di Windows o il Terminal di OSX e Linux).

    Un’interfaccia a riga di comando (dall’inglese Command Line Interface di cui avrete probabilmente incontrato l’acronimo CLI) è un tipo di interfaccia caratterizzata da un’interazione unicamente testuale tra utente ed elaboratore. La nostra esperienza ci ha abituato piuttosto ad interfacce grafiche, a delle GUI (dall’inglese Graphical User Interface), in cui dei componenti visivi (principalmente il puntatore del mouse, le icone, i bottoni e le finestre) ci consentono l’interazione con la macchina.

    I moduli

    Ma torniamo a Node. Esso offre enormi possibilità grazie ai suoi numerosi pacchetti chiamati anche estensioni o moduli. I moduli non sono altro che dei file con estensione .js che esportano delle funzionalità riutilizzabili. La community è molto attiva, ci sono innumerevoli moduli disponibili nel registro pubblico npmjs.

    NPM è il gestore che consente di installare e aggiornare facilmente i moduli sviluppati dalla community con comandi quasi identici nei vari sistemi operativi e poterli così utilizzare nei nostri progetti.

    Potremmo pensare che se non abbiamo intenzione di diventare sviluppatori Node la cosa non ci riguardi. In realtà, con ogni probabilità, ci ritroveremo ad installare Node sulla nostra macchina anche se non siamo sviluppatori Node. Suona strano? Eppure è così. Del resto prima abbiamo sottolineato che tramite Node è possibile confezionare applicazioni per il nostro PC oltre al codice back end di un sito su un server remoto.

    Con Node e NPM, infatti, saranno disponibili numerosi tool che potremo usare in locale sulla nostra macchina. Chi si ritrova ad esempio a studiare React, la nota libreria front end JavaScript, installerà Node per usufrire del tool di sviluppo Create React App, ma gli esempi che potremmo fare sono veramente tanti.

    Versioni e dipendenze

    Non si potrebbero installare le proprie librerie .js manualmente invece di usare NPM? Sì, sarebbe sicuramente possibile scaricare manualmente i moduli, copiarli nelle directory corrette e usarli in questo modo. Tuttavia, quando un progetto (e l’elenco delle sue dipendenze) raggiungono proporzioni ragguardevoli, le procedure di installazione e aggiornamento diventerebbero confusionarie e molto, troppo, dispendiose in termini di tempo. Per questo motivo NPM è solitamente considerato uno strumento essenziale nel flusso di lavoro.

    Il punto di forza di NPM è che regola le dipendenze tra i vari moduli: in altre parole se un modulo ha bisogno di un altro per funzionare, NPM gestirà dietro le quinte questa evenienza scaricando anch’esso. Inoltre, e questo è un punto cruciale, avrà anche cura di reperirne una versione compatibile.

    Un esempio

    Vediamo ora un esempio semplicissimo e di come si crea un progetto Node e di come installare un modulo di terze parti.

    1. Se non l’abbiamo già fatto installiamo Node sulla nostra macchina.
    2. Successivamente occorre posizionarsi sulla cartella che intendiamo assegnare ad un nuovo progetto tramite il comando cd con il Prompt dei comandi (o con il Terminal). Ad esempio per puntare la cartella vuota node-project sul mio desktop io digiterò sul Prompt cd C:\Users\marcello.surdi\Desktop\node-project.
    3. Ogni progetto Node è contraddistinto dalla presenza di un file chiamato package.json che contiene informazioni sul progetto stesso ed un elenco di tutti i moduli (e le rispettive versioni) di cui il progetto corrente ha bisogno per funzionare. Dal momento che la nostra cartella è vuota creiamo un file package.json contenente i valori di default all’interno della suddetta cartella eseguendo il comando npm init -y.
    4. Ora è possibile installare un modulo con il comando install ad esempio npm install markdown. Il modulo markdown verrà in questo caso installato localmente, ovvero soltanto all’interno di quel progetto specifico. Sarebbe possibile anche un’installazione globale ma l’installazione locale è utile quando si vuole utilizzare diverse versioni dello stesso modulo in progetti differenti.
    5. Al termine dell’esecuzione del comando, NPM avrà scaricato l’ultima versione del modulo e lo avrà posizionato nella cartella node_modules (che verrà creata se non esistente) aggiornando contemporaneamente la sezione dependencies del file package.json.

    Quando avremo ultimato e compreso questi semplici passaggi dovremmo avere acquisito una maggiore confidenza nell’utilizzo di npm.