Con peerDependencies in package.json posso fare in modo che l'utente ha un modulo specifico nella RootFolder applicazione:node.js e NPM v3: Come aggiungere Travis mette alla prova peerDependencies compatibili in package.json
module_a
var modB = require('module_b')
...
package.json di module_a
...
"peerDependencies": {
"module_b": "^1.0.1"
},
"dependencies": {
},
...
my_app
var modA = require('module_a')
var modB = require('module_b')
...
struttura dei file
Con NPM v1/v2 questa configurazione funziona perfettamente: npm install module_a
installa module_a e module_b nel RootFolder:
my_app
node_modules
module_a
module_b
Grande, questo è quello che voglio!
npm v3
Ma durante l'installazione con npm install module_a
, stampe NPM v2 questo avvertimento:
npm WARN peerDependencies The peer dependency [email protected]^1.0.1 included
from module_a will no longer be automatically installed to fulfill the
peerDependency in npm 3+. Your application will need to depend on it
explicitly.
Quindi, NPM v3 non verrà installato la dipendenza pari automaticamente, devo installarlo manualmente per my_app per ottenere lo stesso risultato.
Il problema
Ma che dire nel mio test quando si usa NPM v3?
npm v3 non installa la dipendenza peer, quindi travis avrà esito negativo perché non riesce a trovare module_b. Ma non posso aggiungere il modulo come dipendenza regolare perché di my_app e module_a utilizzare diversi "istanze" di module_b:
my_app
node_modules
module_a
node_modules
module_b // used by module_a
module_b // used by my_app
che non è quello che voglio perché module_a modifica alcuni parametri in module_b, ma queste modifiche non sono visibili in my_app.
Domanda
Come posso aggiungere module_b come (peer) dipendenza nel RootFolder senza rompere le prove di Travis da module_a?
Grazie.