2013-05-27 8 views
6

Sono nuovo nel mondo node.js e stavo chiedendo come potrei gestire le versioni delle dipendenze in conflitto (che spesso appare con dipendenze transitive): su internet ho trovato solo questo articolo utile per me http://nodejs.org/api/modules.html#modules_addenda_package_manager_tips.Versioni di dipendenze conflitti su node.js

Quindi sembra che non debba preoccuparsi di conflitti a causa di come i pacchetti sono gestiti in node.js. Mi sbaglio, mi manca qualcosa? Questo sembra strano (ma ha ancora senso) per me, sono abituato a gestire le dipendenze con Maven, impostando le dipendenze transitive che non devono essere scaricate.

Qualsiasi aiuto è apprezzato, grazie.

risposta

6

npm e il sistema di nodo require si prenderà cura di questo automaticamente. Ad esempio, il tuo programma può dipendere da dep1 e dep2. dep1 può richiedere subdep versione 1.0 e dep2 può richiedere subdep versione 2.0 e npm installerà più versioni in modo che ogni modulo ottenga le versioni di dipendenza necessarie.

your-module/ 
    node_modules/ 
     dep1/ 
      node_modules/ 
       subdep/ (1.0) 
     dep2/ 
      node_modules/ 
       sudbep/ (2.0) 
+2

Grande, grazie: cercavo principalmente un riferimento ufficiale e quindi una rassicurazione che avevo ragione. Seguendo il tuo link ho trovato interessante la sezione "Perché npm non può semplicemente mettere tutto in un posto, come gli altri gestori di pacchetti?" che ha indicato a sua volta https://npmjs.org/doc/folders.html. In particolare, nei documenti delle cartelle, ho trovato _la_ risposta nella sezione "esempi" della sezione "Cicli, conflitti e parolacce delle cartelle". – reallynice

+0

C'è un modo per vietare questo comportamento? Quindi se c'è un conflitto. usa il numero più basso – Daniel

+1

No, non c'è. Perché è molto probabile che si verifichi un arresto anomalo in fase di runtime. Se depA richiede [email protected] e depB richiede [email protected] e npm installato solo [email protected] 1.5.0, depA proverà a utilizzare le nuove API 2.0.0, che non esisterebbero, e il programma si arresterebbe in modo anomalo con un eccezione. –

Problemi correlati