servidor - ¿Cómo implemento aplicaciones Node.js como un solo archivo ejecutable?




nodejs en produccion (6)

Además de nexe, se puede usar browserify para agrupar todas sus dependencias como un solo archivo .js . Esto no agrupa el ejecutable del nodo real, solo maneja el lado de javascript. Tampoco maneja módulos nativos. Las opciones de línea de comando para la compilación de nodos puros serían browserify --output bundle.js --bare --dg false input.js .

Esta pregunta ya tiene una respuesta aquí:

Supongamos que he escrito una aplicación Node.js, y ahora me gustaría distribuirla. Por supuesto, quiero que sea fácil para el usuario, por lo tanto, no quiero que instale Node.js, ejecute npm install y luego escriba manualmente el node app.js

Lo que preferiría sería un solo archivo ejecutable, por ejemplo, un archivo .exe en Windows.

¿Cómo podría abordar esto?

Soy consciente de este hilo , de todos modos, esto solo se trata de Windows. ¿Cómo podría lograr esto de una manera independiente de la plataforma? ¿Algunas ideas? ¿Mejores prácticas? ...?

La solución perfecta fue un "compilador" al que puedo asignarle una carpeta de origen. La carpeta fuente contiene la aplicación en varios archivos .js , la carpeta node_modules y algunos metadatos, como el package.json . El resultado debe ser binario para varias plataformas, como Windows, OS X y Linux.

Ah, y lo que es importante: no quiero hacer ningún cambio en el código fuente, por lo que las llamadas para require con rutas relativas todavía deberían funcionar, incluso si esta ruta relativa ahora está dentro de la aplicación empaquetada.

¿Algunas ideas?

PD: No quiero que el usuario instale Node.js de forma independiente, debe incluirse también dentro del ejecutable.


Hay una serie de pasos que debe seguir para crear un instalador y varía para cada sistema operativo. Por ejemplo:


JXcore le permitirá convertir cualquier aplicación de nodejs en un único ejecutable, incluidas todas las dependencias, ya sea en Windows, Linux o Mac OS X.

Aquí hay un enlace al instalador: https://github.com/jxcore/jxcore-release

Y aquí hay un enlace a cómo configurarlo: http://jxcore.com/turn-node-applications-into-executables/

Es muy fácil de usar y lo he probado tanto en Windows 8.1 como en Ubuntu 14.04.

FYI: JXcore es una bifurcación de NodeJS, por lo que es 100% compatible con NodeJS, con algunas características adicionales.


Mientras tanto, he encontrado la (para mí) solución perfecta: nexe , que crea un único ejecutable desde una aplicación Node.js que incluye todos sus módulos.

Aunque en este momento tiene algunas desventajas (no se ejecuta en Windows y no es compatible con los módulos binarios), es la mejor opción para una solución ideal.


Podrías crear un repositorio git y configurar un enlace al repositorio git del nodo como una dependencia. Entonces, cualquier usuario que clone el repositorio también podría instalar el nodo.

#git submodule [--quiet] add [-b branch] [-f|--force]
git submodule add /var/Node-repo.git common

Podría empaquetar fácilmente un script para clonar automáticamente el repositorio git que ha alojado en alguna parte e "instalar" desde uno de esos archivos de script.

#!/bin/sh
#clone git repo
git clone your-repo.git

Primero, hablamos de empaquetar una aplicación Node.js para talleres, demostraciones, etc. donde puede ser útil tener una aplicación "en funcionamiento" sin necesidad de que el usuario final se preocupe por la instalación y las dependencias.

Puede probar la siguiente configuración:

  1. Obtenga su código fuente de aplicaciones
  2. npm install todas las dependencias (a través de package.json) en el directorio local node_modules. Es importante realizar este paso en cada plataforma que desee admitir por separado, en caso de dependencias binarias.
  3. Copie el Node.js binary - node.exe en Windows, (probablemente) / usr / local / bin / node en OS X / Linux en la carpeta raíz de su proyecto. En OS X / Linux puede encontrar la ubicación del binario Node.js con which node .

Para ventanas:
Cree un archivo autoextraíble, 7zip_extra admite una forma de ejecutar un comando inmediatamente después de la extracción, consulte: http://www.msfn.org/board/topic/39048-how-to-make-a-7-zip-switchless-installer/ .

Para OS X / Linux:
Puede usar herramientas como makeself o unzipsfx (no sé si esto se compila con CHEAP_SFX_AUTORUN definido por defecto).

Estas herramientas extraerán el archivo en un directorio temporal, ejecutarán el comando dado (por ejemplo, node app.js ) y eliminarán todos los archivos cuando terminen.





deployment