tutorial - ¿Cómo empacar e implementar Node.js+aplicación web express?
require('' express '') in node js (4)
- ¿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?
- ¿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?)
- ¿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;
-
maven clean install
=>npm install
-
.m2
folder =>node_modules
(En la carpeta del proyecto) -
mvn test
=>npm test
(sección de prueba en elpackage.json
) -
junit
,powermock
, ... => mocha , node-unit , ... -
Spring MVC
=> Express.JS -
pom.xml
=>package.json
-
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/**
), luegonpm install
en tu entorno de ensayo, ejecutanpm install
para restaurar todas las dependenciascree 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 denpm
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 .