Installazione
Installare npm e Node
node -v && npm -v # controlla versioni installate npm install -g npm@latest # aggiorna npm stesso nvm install --lts # installa Node LTS via nvm nvm use 20 # passa a Node 20
Comandi di Installazione
npm installInstalla tutte le dipendenze da package.json
npm install pkgAggiunge pacchetto come dipendenza
npm install -D pkgAggiunge pacchetto come devDependency
npm install -g pkgInstalla pacchetto globalmente
npm install [email protected]Installa versione specifica
npm ciInstallazione pulita dal lock file (CI/CD)
npm uninstall pkgRimuove un pacchetto
Gestione dei Pacchetti
Gestire i Pacchetti
npm ls # elenca i pacchetti installati npm ls --depth=0 # solo il livello principale npm outdated # controlla versioni più recenti npm update # aggiorna nel range semver npm audit # controlla vulnerabilità
Comandi di Gestione
npm lsElenca i pacchetti installati ad albero
npm outdatedMostra pacchetti con versioni più recenti
npm update [pkg]Aggiorna pacchetti nel range semver
npm auditControlla le dipendenze per vulnerabilità
npm audit fixCorregge automaticamente le dipendenze vulnerabili
npm pruneRimuove pacchetti non necessari
npm dedupeAppiattisce l'albero delle dipendenze per ridurre duplicati
Script
Eseguire Script
npm run build # esegue lo script "build" npm test # scorciatoia per lo script "test" npm start # scorciatoia per lo script "start" npm run lint -- --fix # passa argomenti allo script npm run dev & # esegue in background
Ciclo di Vita degli Script
npm test / npm tEsegue scripts.test
npm startEsegue scripts.start
npm run <name>Esegue qualsiasi script personalizzato
pre<name>Eseguito automaticamente prima di
post<name>Eseguito automaticamente dopo
npm runElenca tutti gli script disponibili
package.json
Inizializzazione e Campi
npm init # configurazione interattiva npm init -y # accetta tutti i default npm pkg set name="my-app" # imposta un campo npm pkg get version # legge un campo
Campi Principali
nameNome del pacchetto (minuscolo, senza spazi)
versionVersione corrente (semver: major.minor.patch)
mainEntry point per CommonJS (require)
moduleEntry point per moduli ES (bundler)
type"module" per ESM, "commonjs" per CJS (default)
scriptsComandi nominati (build, test, start, ecc.)
dependenciesDipendenze di produzione
devDependenciesDipendenze solo per lo sviluppo
enginesVersioni richieste di Node/npm
Versioning
Comandi di Versione
npm version patch # 1.0.0 → 1.0.1 npm version minor # 1.0.1 → 1.1.0 npm version major # 1.1.0 → 2.0.0 npm version 3.2.1 # imposta versione esplicita npm version prerelease --preid=beta # 1.0.0-beta.0
Range Semver
^1.2.3Compatibile: >=1.2.3 <2.0.0 (default)
~1.2.3Patch-level: >=1.2.3 <1.3.0
1.2.3Solo versione esatta
>=1.0.0 <2.0.0Range esplicito
*Qualsiasi versione
1.x / 1.2.xRange con wildcard
latestTag dell'ultima versione pubblicata
Pubblicazione
Flusso di Pubblicazione
npm login # autenticati nel registry npm publish # pubblica pacchetto pubblico npm publish --access public # pacchetto con scope pubblico npm unpublish [email protected] # rimuovi versione specifica npm deprecate pkg@"<2" "Usa v2+" # depreca versioni vecchie
Riferimento alla Pubblicazione
npm loginAutenticati con il registry npm
npm publishPubblica il pacchetto nel registry
npm packCrea tarball senza pubblicare
npm unpublishRimuovi versione pubblicata (entro 72h)
npm deprecateSegna versioni come deprecate
.npmignoreFile da escludere dal pacchetto pubblicato
files (package.json)Allowlist dei file da includere nel pacchetto
Workspace
Comandi Workspace
npm init -w packages/core # crea workspace npm install -w packages/core lodash # installa nel workspace npm run build --workspaces # esegui in tutti i workspace npm run test -w packages/api # esegui in workspace specifico npm ls --workspaces # elenca dipendenze workspace
Configurazione Workspace
workspaces (package.json)Array di glob workspace: ["packages/*"]
-w / --workspacePunta a un workspace specifico
--workspacesEsegui comando su tutti i workspace
--include-workspace-rootIncludi il pacchetto root nelle operazioni workspace
npm install (root)Installa tutte le dipendenze dei workspace
HoistingDipendenze condivise elevate al node_modules root
npx
Eseguire con npx
npx create-react-app my-app # esegui senza installare npx tsc --init # esegui bin locale o remoto npx -p typescript tsc file.ts # specifica pacchetto esplicitamente npx --yes create-next-app # salta prompt installazione npx node@18 -e "console.log('hi')" # esegui con Node specifico
Opzioni npx
npx cmdEsegui cmd da node_modules/.bin locale o remoto
npx -p pkg cmdInstalla pkg, poi esegui cmd
npx --yes cmdConferma automaticamente il prompt di installazione
npx --no cmdRifiuta installazione — fallisce se non è locale
npx -c 'cmd'Esegui comando shell con PATH npx
npx node@verEsegui versione specifica di Node.js
Configurazione
Comandi di Configurazione
npm config list # mostra configurazione corrente npm config set registry https://r.npmjs.com/ npm config set init-author-name "Nome" npm config get prefix # percorso installazione globale npm config delete key # rimuovi un valore di configurazione
Riferimento Configurazione
.npmrc (project)File di configurazione per progetto
~/.npmrcFile di configurazione per utente
registryURL del registry dei pacchetti
save-exacttrue per bloccare versioni esatte all'installazione
engine-stricttrue per applicare il campo engines
fundfalse per sopprimere i messaggi di funding
auditfalse per saltare l'audit all'installazione
Pattern Comuni
One-Liner
npm ls --depth=0 --json | jq '.dependencies | keys[]' npm outdated --long # mostra tipo e homepage npm cache clean --force # svuota cache npm npm explain pkg # perché è installato pkg? npm exec -- envinfo --system # info sistema per bug report
Ricette
Solo lock filenpm ci — installazione pulita da package-lock.json
Controlla licenzenpx license-checker --summary
Trova dep inutilizzatenpx depcheck
Dimensione bundlenpx bundlephobia-cli pkg — controlla dimensione pacchetto
Aggiorna tuttonpx npm-check-updates -u && npm install
Registry localenpx verdaccio — esegui registry privato