Moduli privati dell'app Node.js. Dove metterli?

8

La situazione sarebbe:

Sviluppo 2 progetti nel mio ambiente di sviluppo Node.js, P1 e P2.

P1 ha richiesto lo sviluppo di due moduli semplici, mod1 e mod2, che sono memorizzati in P1/lib . Ciascuno di questi moduli risolve trovare le loro dipendenze esterne in P1/node_modules . Le dipendenze necessarie per P1 sono state installate in questa cartella tramite npm.

Ora immagine vogliamo riutilizzare mod1 nell'altro proyect P2, ecco i miei dubbi. Potrei ...

  • copia semplicemente mod1 in P2/lib . Replica, quindi non considero nemmeno questa opzione.

  • Da P2, riferimento mod1 da P1: require($PROJECTS_DIR + '/P1/lib/mod1') . Non è una buona opzione, in questo modo P2 dipenderebbe da P1.

  • Metti mod1 in una directory di livello superiore o usando NODE_PATH, in modo che P1 e P2 possano risolverlo semplicemente doint require('mod1') . Tuttavia, durante la distribuzione, dovrei anche distribuire questa directory di livello superiore che sembra un po 'sporca.

  • Vorrei trattare mod1 come un modulo npm, quindi può essere facilmente installato in qualsiasi progetto o ambiente, tuttavia, in questo caso particolare, non posso pubblicare il modulo su npm perché è troppo project- specifico. Potrei creare un repository privato di npm e inserire mod1 all'interno. L'essenza di questo sarebbe configurarlo per poter accedere anche dall'ambiente di produzione. Ne vale la pena?

  • Che dire mettere tutto insieme in node_modules ? (dipendenze esterne e mie librerie personali). Sarebbe bello visto che i moduli possono essere richiesti solo come 'require (' module '). Ma sembra anche abbastanza sporco.

  • Non sei sicuro di come npm link funzionerebbe durante la distribuzione. Crea un collegamento simbolico, che non viene seguito quando si esegue il codice tramite Git o SVN. Se eseguo npm install in produzione, installerò anche il modulo collegato?

Nessuno dei precedenti mi soddisfa abbastanza. Non so se uno di questi è adatto, o voi avete altri suggerimenti, ma esistono dei metodi preferiti per strutturare le proprie librerie private in modo che possano essere facilmente riutilizzati in altri progetti?

    
posta jaime 23.01.2013 - 12:52
fonte

1 risposta

6

Utilizza npm link . Ti permette di avere un modulo dove vuoi, e puoi quindi "collegarlo" al tuo progetto (un link simbolico verrà creato nel tuo node_modules / cartella), quindi puoi usarlo con require('mod1') . Il tuo modulo deve essere compatibile con npm.

Maggiori informazioni qui: link

Riguardo alle tue preoccupazioni private, npm ci ha pensato e fornisce l'opzione private . Vedi qui: link (Vai a: "Non voglio che il mio pacchetto sia pubblicato nel registro ufficiale. È privato." )

Per ogni dipendenza del modulo, puoi semplicemente definirli in package.json.

    
risposta data 23.01.2013 - 13:06
fonte

Leggi altre domande sui tag