←
{Node.js} Struttura di un app node ed i file package.json & package-lock.json
home / javascript /
Lucio Paolo Asciolla
Senior Full Stack Developer
Finora abbiamo visto com'è strutturata un app node e gli elementi fondamentali che compongono la struttura stessa del nostro applicativo.
Avendo visto precedentemente lo strumento NPM e la possibilità di includere moduli-esterni.
Con l'introduzione di moduli-esterni la struttura della nostra app si evolve; ripercorreremo brevemente tutti gli elementi fondamentali e principale implementando la struttura ed i relativi file, package.json e package-lock.json, aggiunti in seguito all'installazione di nuovi moduli di terze-parti.
Un progetto in VSC è una nuova cartella; un app node è contenuta all'interno di una cartella del nostro PC.
File > Nuova Cartella
Il file index.js è il file principale della nostra app e contiene tutto il codice necessario all'esecuzione dell'applicativo stesso.
Può contenere e richiedere moduli auto-costruiti contenuti in altri file con estensione .js o richiamare moduli bulit-in.

Sappiamo inoltre per lanciare il nostro applicativo dovremo fare riferimento al medesimo file.
I moduli auto-costruiti possono essere contenuti semplicemente in altri file .js nella root principale dell'app o in cartelle dedicate.

I moduli built-in sono moduli già integrati; quindi, non visibili nella struttura della nostra app ma sono ugualmente richiamabili da qualunque punto/file del nostro applicativo.

I moduli di terze-parti o esterni sono moduli installabili e disinstallabili grazie all'utilizzo di NPM.
L'installazione di moduli esterni, in base alla loro complessità, può prevedere la creazione di nuove cartelle e file.
Inoltre include l'installazione nella root principale di nuovi file, packages.json e package-lock.json che esamineremo subito dopo aver terminato questo riepilogo.
I moduli di terze-parti sono installati nella cartella nominata "node-modules"

I moduli esterni installati vengono richiamati come i moduli built-in:
const react = require('react');
Il file package.json è un file detto "manifest" tradotto "manifesto".
Il file manifest contiene tutte le informazioni della nostra applicazione come:
Il package.json è creato automaticamente, se assente, dall'installazione di un modulo esterno. In realtà non è la procedura corretta in quanto il file package.json dovrebbe essere già presente prima dell'installazione di moduli esterni.
Questo perchè l'installazione di un modulo-esterno si limiti ad aggiornare o a creare da zero il file inserendo solo i dati a se stesso pertinenti.
E' buona prassi quindi provvedere sin da subito, all'inizio di un progetto, alla creazione dello stesso in modo da includere le informazioni sopra elencate.
Il file package.json può essere creato sia manualmente o attraverso lo strumento ed il seguente comando NPM:
npm init
{
"name": "progetto",
"version": "0.0.1",
"description": "Big project",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Lucio",
"license": "ISC"
}
Il risultato è un file con estensione e sintassi json che contiene le informazioni fornite.
Qualora volessimo generare un file standard da poter modificare successivamente a mano possiamo utilizzare il comando:
npm init -y
Il file sarà compilato in maniera basica lasciando molteplici valori delle proprietà in esso contenuti vuoti.
Quando installiamo moduli di terze-parti nel nostro file è aggiunta una nuova proprietà chiamata "dependencis" tradotto "Dipendenze".

Le "dependecis" sono sostanzialmente quei pacchetti necessari alla nostra applicazione affinché funzioni correttamente.
L'installazione di un nuovo modulo-esterno ha anche provveduto a creare un nuovo file il file "package-lock.json"
Il file package-lock.json ha l'obiettivo di definire in modo specifico quali sono le versioni dei pacchetti installati nella nostra applicazione.
Nel file package.json infatti è indicato la versione da-a

il simbolo "^" che precede la versione sta indicare: a partire dalla versione 18.2.0 o superiori.
Mentre nel file package-lock.json è indicata con esattezza la versione installata questo perchè se dovessimo installare versione differenti inferiori o superiori potremmo riscontrare problematiche nell'esecuzione dell'applicativo stesso.
Comprenderemo meglio questo tipo di problematica affrontando l'argomento della semantica delle versioni.

Per comprendere la semantica delle versioni bisogna capire cosa indicano i tre numeri separati dai punti.
version: 5.2.2 version: MAJOR.MINOR.PATCH