Risposte:
Dalla documentazione di npm-link :
Nella directory del modulo locale:
$ cd ./package-dir
$ npm link
Nella directory del progetto per utilizzare il modulo:
$ cd ./project-dir
$ npm link package-name
O in una volta sola usando i percorsi relativi:
$ cd ./project-dir
$ npm link ../package-dir
Ciò equivale a usare due comandi sopra sotto il cofano.
npm linkcreerà una seconda istanza di dipendenze esterne. Quindi, se hai un pacchetto A che necessita di B e C, B ha bisogno di C. il collegamento B farà sì che l'applicazione A abbia due istanze di C.
devi solo fornire un <folder>argomento a npm install, l'argomento dovrebbe puntare verso la cartella locale anziché il nome del pacchetto:
npm install /path
rm -rf node_modulesprima e npm installdopo aver eseguito lo script della risposta.
Dato che mi è stato chiesto e risposto dalla stessa persona, in alternativa aggiungerò un link npm .
dai documenti:
Questo è utile per installare le tue cose, in modo che tu possa lavorarci e testarlo iterativamente senza doverlo ricostruire continuamente.
cd ~/projects/node-bloggy # go into the dir of your main project
npm link ../node-redis # link the dir of your dependency
[Modifica] A partire da NPM 2.0, è possibile dichiarare dipendenze locali in package.json
"dependencies": {
"bar": "file:../foo/bar"
}
npm linkuna volta la cartella (per creare un collegamento simbolico globale) e quindi eseguire npm link package-nameall'interno della cartella del progetto (per utilizzare il collegamento simbolico globale nel progetto). La risposta di seguito è la risposta giusta.
file:approccio) ha permesso alla mia app e al modulo locale di condividere una dipendenza. Il mio test ha npm linkprodotto una dipendenza duplicata, che interrompe le cose se la dipendenza deve essere utilizzata come singleton.
npm pack + package.jsonQuesto è ciò che ha funzionato per me:
module project, eseguire npm pack:Questo costruirà un <package-name>-<version>.tar.gzfile.
consumer projectIdealmente puoi mettere tutti questi file in una tmpcartella nella tua consumer-projectradice:
package.json:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Installi pacchetti:npm installoppure npm ioppureyarn
consumer-project's node_modulescartella.In bocca al lupo...
Nessuno di questi approcci ( npm linko package.jsondipendenza dai file) funziona se il modulo locale ha dipendenze tra pari che si desidera installare solo nell'ambito del progetto.
Per esempio:
/local/mymodule/package.json:
"name": "mymodule",
"peerDependencies":
{
"foo": "^2.5"
}
/dev/myproject/package.json:
"dependencies":
{
"mymodule": "file:/local/mymodule",
"foo": "^2.5"
}
In questo scenario, gli insiemi NPM up myproject's node_modules/in questo modo:
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
Quando il nodo si carica mymodulee lo fa require('foo'), il nodo risolve il mymodulecollegamento simbolico e quindi cerca solo /local/mymodule/node_modules/(e i suoi antenati) foo, che non trova. Invece, vogliamo che il nodo guardi /local/myproject/node_modules/, dato che è da lì che stavamo eseguendo il nostro progetto e dove fooè installato.
Quindi, o abbiamo bisogno di un modo per dire al nodo di non risolvere questo link simbolico durante la ricerca foo, o abbiamo bisogno di un modo per dire a npm di installare una copia di mymodulequando viene utilizzata la sintassi della dipendenza file package.json. Purtroppo non ho trovato un modo di fare neanche :(
NODE_PATHper indicare node_modules/dove fooè installato. Quindi, per il caso precedente, sarebbe questo: NODE_PATH=/dev/myproject/node_modules/ che consente mymoduledi trovare foo.
Come hanno risposto le persone precedenti npm --save ../location-of-your-packages-root-directory. Il ../location-of-your-packages-root-directorytuttavia deve avere due cose in ordine per farlo funzionare.
1) package.jsonin quella directory puntata verso
2) la mainproprietà in package.jsondeve essere impostata e funzionante ig "main": "src/index.js",se il file della voce ../location-of-your-packages-root-directoryè../location-of-your-packages-root-directory/src/index.js