Generatore di Package.json

package.json
Avanti

Invece di eseguire npm init e rispondere a undici domande, compila un modulo e ricevi un package.json ordinato e correttamente strutturato. Questo generatore copre i campi richiesti (nome, versione), quelli comunemente usati (script, dipendenze, devDependencies, engines) e le caratteristiche (repository, bug, parole chiave, licenza) che rendono un pacchetto scopribile e pubblicabile.

Come generare il tuo package.json

  1. 1

    Inserisci nome e versione

    Il nome segue le regole npm: minuscolo, sicuro per URL, sotto 214 caratteri. La versione è semver (es. 0.1.0).

  2. 2

    Scegli il tipo di modulo

    CommonJS (predefinito) o ESM tramite "type": "module". Importante per i progetti Node.js 14+.

  3. 3

    Aggiungi script

    Start, build, test, lint, i comandi vengono eseguiti con `npm run <name>`.

  4. 4

    Elenca le dipendenze

    Pacchetti runtime in dipendenze, strumenti in devDependencies.

  5. 5

    Imposta metadati

    Descrizione, autore, licenza, URL del repository, parole chiave.

  6. 6

    Copia l'output

    Incolla in un nuovo package.json nella radice del progetto.

I campi che contano di più

Campo Obbligatorio? Note
name Minuscolo, 1-214 caratteri, sicuro per URL
version Semver (major.minor.patch)
type No “module” per ESM, omettere per CommonJS
main Raccomandato Punto di ingresso per CommonJS (index.js)
exports Raccomandato Mappa di esportazione moderna per CJS/ESM
scripts Fortemente raccomandato Comandi npm run <name>
dependencies Se necessario Pacchetti runtime
devDependencies Se necessario Strumenti di build, runner di test, linters
engines Utile da avere Intervallo di versioni Node richiesto
license Sì per la pubblicazione Identificatore SPDX come MIT, Apache-2.0

Scheda di riferimento Semver

  • 1.0.0, major.minor.patch
  • ^1.0.0, compatibile con 1.x.x (>=1.0.0, <2.0.0)
  • ~1.0.0, solo aggiornamenti patch (>=1.0.0, <1.1.0)
  • >=1.0.0 <2.0.0, intervallo esplicito
  • 1.0.0-beta.1, prerelease
  • latest, tag npm, non una versione

Predefinito quando si esegue npm install package è ^, che consente aggiornamenti non distruttivi.

Script standard da avere

{
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js",
    "build": "tsc",
    "test": "vitest",
    "lint": "eslint .",
    "format": "prettier --write ."
  }
}

Errori di denominazione

  • Niente maiuscole. MyPackage fallisce npm install.
  • Niente spazi. Usa trattini: my-package.
  • Nomi scopi iniziano con @org/ per organizzazioni GitHub o npm: @acme/utils.
  • Parole riservate. node_modules, favicon.ico, core, express non possono essere usati come nomi di pacchetti.

Opzioni di licenza

Scegli un identificatore SPDX riconosciuto:

  • MIT, scelta comune più permissiva.
  • Apache-2.0, permissivo con concessione di brevetto.
  • ISC, licenza molto breve simile a MIT, predefinita di npm.
  • GPL-3.0-or-later, copyleft.
  • UNLICENSED, pacchetto privato, non per distribuzione.

Stringhe di licenza errate o ambigue generano avvisi su npm publish.

Domande frequenti

Le dipendenze vengono installate quando qualcuno esegue npm install in un progetto che consuma il tuo. Le devDependencies vengono installate solo nell’ambiente di sviluppo del pacchetto. Metti i pacchetti runtime in dipendenze e gli strumenti di test/build in devDependencies.

Sì, per le applicazioni. Il lockfile fissa versioni esatte e garantisce installazioni riproducibili su macchine e CI. Per i pacchetti di libreria pubblicati su npm, il lockfile è facoltativo, i consumatori ottengono il proprio lockfile.

Solo se vuoi che il pacchetto sia ESM (sintassi import/export) per impostazione predefinita. Senza di esso, i file .js vengono trattati come CommonJS. Puoi anche usare .mjs per i file ESM o .cjs per i file CommonJS indipendentemente da “type”.

Le versioni Node contro cui il tuo codice è stato testato. Una scelta tipica oggi è "engines": {"node": ">=18"}. È un avviso, non un errore, ma gli strumenti lo rispettano e gli utenti fissano correttamente.

Strumenti correlati

Strumento disponibile in altre lingue