2012-08-31 28 views
6

¿Cuál sería la forma preferida de manejar módulos internos dentro de una aplicación node.js?Cómo administrar los módulos internos Node.JS

Es decir, actualmente tenemos una aplicación bastante grande y hay varias dependencias, instaladas a través de npm. Tenemos node_modules en .gitignore. Por lo tanto, no está en el repositorio. Usamos npm shrinkwrap para congelar las versiones de los módulos, por lo que, al momento de la implementación, un npm install reúne todo lo que necesitamos en node_modules.

El problema es que, como nuestra aplicación externa está creciendo, queremos dividirla en módulos más pequeños. Ahora, si creo un módulo foo y lo coloco en node_modues, debo permitirlo en el repositorio, que no parece tan limpio como para tener módulos ignorados y prestados en node_modules.

No podemos publicar estos registros en npm porque no son realmente "públicos".

¿Hay alguna solución obvia de la que no tenga conocimiento?

+1

Acabo de pegar mis bibliotecas/módulos privados en un directorio '/ lib' bajo el proyecto en vez de' npm_modules'. De esta manera, también pueden incluirse en Git. –

+0

Sí, es muy común tener una carpeta lib y requerir ('./ lib/myThing') –

+2

Con la carpeta lib, necesito nombrar los módulos explícitamente cada vez que los necesito. Los necesito mucho :) De todo tipo de lugares. Realmente no me gusta 'require (" ../../../../../ lib/foo ")'. Tenerlos en módulos de nodos hace que el acceso sea mucho más fácil. –

Respuesta

7

Estoy de acuerdo con su estética de no mezclar material de terceros no repo con sus contenidos internos controlados por revisión.

La variable de ruta de búsqueda NODE_PATH puede ayudarlo aquí, puede usar un directorio diferente con contenido bajo control de revisión.

http://nodejs.org/api/modules.html

Dependiendo de su apetito por la flexibilidad frente a la complejidad, se puede considerar un paso de generación que en realidad copia sus diversos módulos de nodo desde donde se guarda, en un directorio de salida ("node_modules nombre" probablemente, pero no necesariamente)

+0

NODE_PATH parece ser el enfoque más elegante aquí. Solo puedo guardar cosas en lib/y hacer referencia a ellas por nombre en require. Dado que la variable de entorno está debidamente documentada, no creo que pueda considerarse un truco o algo así :) Gracias. –

5

Una solución común es almacenar los módulos en un repositorio privado de Git en algún lugar, y luego usar una URL git:// como dependencia; npm sabe cómo clonar repositorios como dependencias.

+0

Gracias, lo evalué pero luego, necesito autorizar de alguna manera a nuestros servidores para que accedan a los repositorios privados de git. Ya sea a través de la clave pública del servidor o del rango de IP. Eso funcionaría sin embargo. –

Cuestiones relacionadas