Stack

Come il tuo sito indica la versione di Node che gli serve

Nel package.json, engines avvisa chi installa il pacchetto, salvo engine-strict. devEngines controlla chi lavora sul codice, prima di install, ci e run. Nessuno dei due installa Node.

Marco Conte 3 min di lettura

Come il tuo sito indica la versione di Node che gli serve
In questa guida (3)
  1. 1Il campo che avvisa chi installa il pacchetto
  2. 2Il campo che ferma chi lavora sul codice
  3. 3Che cosa scrivere, e che cosa il file non fa

Chi pubblica un sito con Node ha bisogno di dire quale versione gli serve. Nel package.json ci sono due campi che sembrano la stessa frase e non fanno lo stesso lavoro. Il 5 novembre 2026 ho letto la documentazione del CLI npm in versione 11, le pagine package.json e config. Non ho lanciato npm su un server.

Le pagine sono package.json e la configurazione del CLI. Quale linea di Node convenga a un progetto è un altro pezzo, Node.js LTS: quale versione scegliere per un progetto. Il comando che reinstalla le versioni già fissate, e che devEngines dichiara di precedere, sta in npm ci o npm install.

Il campo che avvisa chi installa il pacchetto

La pagina package.json dice che engines indica la versione di Node su cui il programma funziona. L'esempio stampato è un oggetto con node impostato a un intervallo che parte da 0.10.3 e si ferma prima di 15. È l'esempio del manuale, non un intervallo da copiare. Se la versione manca, o se il valore è un asterisco, va bene qualunque Node. Lo stesso campo può indicare quale versione di npm è in grado di installare il programma. L'esempio del manuale, anche questo da non copiare, usa una tilde su 1.0.20.

Senza il flag engine-strict, il campo è solo un avviso. La stessa pagina precisa che produce warning quando il pacchetto viene installato come dipendenza. Non ho allargato questa frase alle installazioni fatte dentro il repository: il testo parla della dipendenza.

engine-strict, sulla pagina config, ha default false. Se è true, npm rifiuta di installare, e anche di prendere in considerazione, un pacchetto che dichiara di non essere compatibile con la versione di Node in uso. Il flag force scavalca quel rifiuto.

Il campo che ferma chi lavora sul codice

devEngines è un altro oggetto. La pagina dice che parte prima dei comandi install, ci e run. La forma non è quella di engines. engines, scrive la nota, avvisa quando una dipendenza usa un Node o un npm diversi da quelli del progetto in cui viene usata. devEngines avvisa chi lavora sul codice sorgente del progetto.

Le chiavi ammesse sono cpu, os, libc, runtime e packageManager. Ogni voce è un oggetto, oppure un array di oggetti. L'oggetto deve avere name e può avere version e onFail. onFail vale warn, error o ignore. Se manca, vale error. npm assume che il runtime sia node. Se runtime.name o packageManager.name sono una stringa diversa, il CLI fallisce. L'esempio del manuale mette un runtime di nome node con onFail error, e un packageManager di nome npm con onFail error.

Che cosa scrivere, e che cosa il file non fa

Se il sito è una libreria che altri installano, il campo che il manuale lega all'avviso verso chi la installa è engines. Se devono fermarsi le persone che lavorano in quel repository, il manuale assegna il controllo a devEngines, e onFail di default è un errore. I due campi non installano Node sulla macchina e non cambiano la versione scelta nel pannello di hosting. Quella scelta resta fuori da package.json. Il numero da scrivere, quando serve una linea ancora aggiornata, si decide nel pezzo sulla LTS.

La fotografia è lo schedario a cassetti della Indiana State Library, di TBurmeister (Wikimedia Foundation), 4 ottobre 2024 alle 19:14, licenza CC BY-SA 4.0. È un catalogo cartaceo. Non è il package.json del sito.

Potrebbe interessarti anche...

Hai bisogno di scegliere una webagency per il tuo progetto?

Abbiamo la soluzione giusta

Parliamone
  • Consulenza specializzata
  • Soluzioni su misura
  • Risultati concreti

Tecnologialiberaper tutti

Hai bisogno d'aiuto?

Parla con noi. Il nostro supporto è attivo tutti i giorni dalle 9 alle 18

+390835239514 Chiamaci

Crea il tuo eCommerce

Creiamo eCommerce su misura senza farti spendere un patrimonio

info@roxxoitalia.com Scopri il nostro CMS

Crea il tuo sito web

Siti web già pronti per andare online. Vuoi saperne di più? Contattaci

info@roxxoitalia.com Scrivici