Per il rapido lettore di: questo QA è di circa il campo package.json bundledDependencies, non sulla package.
Cosa bundledDependencies fanno
"bundledDependencies" sono esattamente ciò che implica il loro nome. Dipendenze che dovrebbero essere all'interno del tuo progetto. Quindi la funzionalità è fondamentalmente la stessa delle normali dipendenze. Saranno anche imballati durante l'esecuzione di npm pack
.
Quando usarli
dipendenze normali sono in genere installati dal Registro di NPM. dipendenze Così in bundle sono utili quando:
- si desidera riutilizzare una libreria di terze parti che non proviene dal Registro di NPM, o che è stato modificato
- volete riutilizzare i propri progetti come i moduli
- si desidera distribuire alcuni file con il modulo
In questo modo, non c'è bisogno di creare (e mantenere) il proprio repository NPM, ma ottenere gli stessi benefici che si ottiene da pacchetti NPM.
Quando non di utilizzare le dipendenze
Quando si sviluppa in bundle, non credo che il punto principale è quello di evitare che gli aggiornamenti accidentali però. Abbiamo strumenti migliori per questo, vale a dire repository di codici (git, mercurial, svn ...) o ora lock file.
Per aggiungere i tuoi versioni del pacchetto, è possibile utilizzare:
Option1: Utilizzare la più recente NPM versione 5 che viene fornito con il nodo 8. Si utilizza un file package-lock.json
(vedi la node blog e il rilascio del nodo 8)
Opzione2: utilizzare yarn anziché npm
. È un gestore di pacchetti da facebook, più veloce di npm
e utilizza un file yarn.lock
. Utilizza lo stesso package.json
in caso contrario.
Ciò è paragonabile file di lock in altri gestori di pacchetti come Bundler o Cargo. È simile al npm-shrinkwrap.json di npm, tuttavia non è lossy e crea risultati riproducibili.
npm
ha effettivamente copiato questa funzione da yarn
, tra le altre cose.
- Opzione3: questo era l'approccio consigliato in precedenza, che non consiglio più. L'idea era di usare la
npm shrinkwrap
la maggior parte del tempo, e qualche volta mettere l'intera cosa, inclusa la cartella node_module, nel tuo repository di codice. O possibilmente usare shrinkpack. Le migliori pratiche al momento sono state discusse su node.js blog e sui siti Web joyent developer.
Vedi anche
Questo è un po 'al di fuori della portata della questione, ma mi piacerebbe citare l'ultimo tipo di dipendenze (che io sappia): peer dependencies. Vedi anche questo related SO question ed eventualmente i documenti di yarn
su bundledDependencies.
'Se questo è scritto "bundleDependencies", allora questo è anche onorevole.' Ottima documentazione! –
Eppure, in qualche modo, fissarlo solo per leggere "è anche onorato" è triste. In un punto critico, se avessi ordinato un samurai o un cavaliere per aiuto, mi piacerebbe sicuramente che venisse fornito in bundle con armi e armature compatibili - e che fosse onorevole. –
"Suppongo che se vogliamo essere assolutamente sicuri di ottenere la versione corretta anche se il modulo che facciamo riferimento viene eliminato" porta improvvisamente un sacco di peso: http://blog.npmjs.org/post/141577284765/kik-left- pad-and-npm – joews