visual tutorial studio run proyecto node crear app node.js express web-deployment packaging

tutorial - ¿Cómo empacar e implementar Node.js+aplicación web express?



require('' express '') in node js (4)

  1. ¿Hay algún formato / guía estándar de webapps de nodo de empaquetado creado con Express? (¿Hay un sistema similar de envasado jar / war para aplicaciones de nodo?)

Sí, la especificación de Paquetes CommonJS :

Esta especificación describe el formato de paquete CommonJS para distribuir programas y bibliotecas CommonJS. Un paquete CommonJS es un envoltorio cohesivo de una colección de módulos, código y otros activos en una sola forma. Proporciona la base para una entrega, instalación y administración conveniente de los componentes de CommonJS.

Para su próxima pregunta:

2. ¿Cómo lo despliego una vez empaquetado? ¿Se convertiría en un ejecutor, ya que también es su propio contenedor?

Apoyo la sugerencia de Hüseyin de desplegar en Heroku para producción. Para el desarrollo y la puesta en escena utilizo Node-Appliance con VirtualBox y Amazon EC2, respectivamente:

Este programa toma una máquina Debian construida por build-debian-cloud o Debian-VirtualBox-Appliance y la convierte en un "dispositivo" Node.js, capaz de ejecutar una aplicación Node implementada a través de git.

Su aplicación web no se convertirá en un exe .

Soy nuevo en la programación de Node.js y recientemente he creado una aplicación web de muestra de trabajo utilizando (express, backbone y otras tecnologías de vista complementarias, con mongoDB). Ahora estoy en un punto en el que quiero implementar lo mismo en un entorno de preparación y no estoy seguro de cómo empaquetar esta aplicación y distribuirla. [Puedo ocuparme de mongoDb y configurarlo por separado]

Soy del mundo de Java y allí creamos frascos para libs reutilizables y paquetes war / ear para aplicaciones web que se implementan en un contenedor de servlets. Ahora, en este caso, dado que node.js también actúa como un contenedor web, ¿cómo puedo empaquetar mi aplicación web?

  1. ¿Hay algún formato / guía estándar de webapps de nodo de empaquetado creado con Express? (¿Hay un sistema similar de envasado jar / war para aplicaciones de nodo?)
  2. ¿Cómo lo despliego una vez empaquetado? ¿Se convertiría en un ejecutor, ya que también es su propio contenedor?

PD: Por ahora estoy pensando en copiar manualmente todos los archivos fuente necesarios en el entorno de ensayo y ejecutar los comandos npm para descargar todas las dependencias en esa máquina y luego usar ''forever'' u otro mecanismo para ejecutar mi servidor.js. (Además, agregue algún tipo de monitoreo, por si falla la aplicación y falla para siempre) ¿No estoy seguro de que esa sea la manera correcta? Estoy seguro de que debe haber alguna forma estandarizada de abordar este problema.


Desplegar aplicaciones Node.js es algo muy fácil. En maven, hay pom.xml . El concepto relacionado en Node.js es package.json . Puede indicar sus dependencias en package.json . También puede configurar el entorno en package.json . Por ejemplo, en el entorno de desarrollo puedes decir que

Quiero ejecutar pruebas unitarias

pero en producción;

Quiero omitir las pruebas unitarias

Tienes repositorios locales para maven en la carpeta .m2 . En Node.js, hay una carpeta node_modules en su proyecto Node.js. Puedes ver carpetas de módulos con su nombre.

Vayamos a la parte grunt de esta respuesta. Grunt es un administrador de tareas para sus activos frontend, html, javascript, css. Por ejemplo, antes de la implementación puede minificar html, css, javascript incluso imágenes. También puede poner funciones de ejecución de tareas de grunt en package.json .

Si desea ver una aplicación de ejemplo, puede encontrar una aplicación de blog de ejemplo here . Compruebe la estructura de la carpeta y package.json para referencia.

Para la implementación, sugiero que despliegue heroku para las aplicaciones de inicio. Puedes encontrar cómo hacerlo here . Esta es una implementación simple basada en git.

En la parte de ejecución del proyecto, simplemente configure su entorno NODE_ENV=development y node app.js Aquí app.js está en tu proyecto.

Aquí hay un concepto relativo para java y nodejs;

  1. maven clean install => npm install
  2. .m2 folder => node_modules (En la carpeta del proyecto)
  3. mvn test => npm test (sección de prueba en el package.json )
  4. junit , powermock , ... => mocha , node-unit , ...
  5. Spring MVC => Express.JS
  6. pom.xml => package.json
  7. import package => require(''module_name'')

algunas formas de abordar esto:

  • Inserta tu código en el repositorio de Git, excluyendo todo lo que no sea tu código ( node_modules/** ), luego npm install en tu entorno de ensayo, ejecuta npm install para restaurar todas las dependencias

  • cree un paquete de NPM, instálelo a través de npm en su entorno de ensayo (esto también debería ocuparse de todas las dependencias)

  • archivos de copia / ssh manuales a su entorno de ensayo (esto se puede automatizar con Grunt ), que restaurar sus dependencias a través de npm


No hay una forma estandarizada, pero estás en el camino correcto. Si su package.json está actualizado y bien conservado, puede copiar / comprimir / clonar el directorio de la aplicación en el sistema de producción, excluyendo node_modules .

En su sistema de producción, ejecute npm install para instalar sus dependencias, npm test si tiene pruebas y finalmente NODE_ENV=production node server.js

Algunas diapositivas recientes que considero bastante útiles y que también incluyen el tema de envoltorios como para siempre, se pueden encontrar here .