2016-01-20 17 views
9

Sto provando a creare un nodo js project con gli strumenti NodeJS per VS2015.Strumenti Nodejs per VS2015 con dipendenze locali

In questa soluzione, esiste un progetto principale con sottoprogetti nelle sottocartelle, ovvero ciascuna sottocartella ha il proprio package.json con il proprio codice e ognuno dichiara le proprie dipendenze ad altri progetti.

Il problema che ho è che quando eseguo "npm install" nel progetto principale, "npm" scarica i pacchetti dal registro di npm.

so che potrebbe usare:

"dependencies": { 
    "common": "file:path/to/common", 
} 

Ma questo approccio mi costringe a mantenere manualmente i due file package.json e rinominarlo in ogni commit (il progetto è open source, su GitHub); È ingombrante e soggetto a errori.

La mia domanda è: Posso configurare gli strumenti NodeJS per VS per gestire due diverse configurazioni per il debug e il rilascio? Ad esempio, posso farlo in un progetto C#.

Qualcosa come l'utilizzo di un file package.Debug.json ... qualsiasi altro approccio è benvenuto.

risposta

2

Per farlo, è possibile utilizzare npm-link per creare un collegamento tra il pacchetto e il suo codice sorgente (Questo post su che è molto interessante: npm link: developing your own npm modules without tears)

Nel tuo caso:

  • Execute npm link per ogni sottoprogetto
  • Nel progetto principale, eseguire npm link subproject1 ... npm link subprojectN

Ho testato con Visual Studio 2015 la creazione di una soluzione con due progetti

nodejs-projectdeps 
|- nodejs-projectdeps-main 
|- nodejs-projectdeps-module1 

package.json per nodejs-projectdeps-main Pacchetto

{ 
    "name": "nodejs-projectdeps-main", 
    "version": "0.0.0", 
    "description": "nodejs-projectdeps-main", 
    "main": "app.js", 
    "dependencies": { 
    "azure": "^0.10.6", 
    "nodejs-projectdeps-module1": "0.0.0" 
    } 
} 

.JSON per nodejs-projectdeps-modulo1

{ 
    "name": "nodejs-projectdeps-module1", 
    "version": "0.0.0", 
    "description": "nodejs-projectdeps-module1", 
    "main": "app.js", 
    "dependencies": { 
    "dockerctl": "0.0.0" 
    } 
} 

Poi ho eseguito npm link nella cartella del progetto nodejs-projectdeps-module1 e il risultato è stato:

C:\Users\...\npm\node_modules\nodejs-projectdeps-module1 
    -> C:\src\nodejs-projectdeps\nodejs-projectdeps-module1 

Dopo ho eseguito cartella del progetto npm link in the nodejs-projectdeps-module1 e il risultato è stato:

C:\src\nodejs-projectdeps-main\node_modules\nodejs-projectdeps-module1 
    -> C:\Users\...\npm\node_modules\nodejs-projectdeps-module1 
    -> C:\src\nodejs-projectdeps\nodejs-projectdeps-module1 

Dopo tutto, la soluzione in Visual Studio 2015 mostra le dipendenze in questo modo:

Visual Studio NodeJs Solution

Aggiornamento: La fonte del mio codice di prova è pubblicato sul GitHub

Problemi correlati