He buscado un poco, pero no puedo encontrar una herramienta existente para esto.
Tengo un servidor web node.js que está diseñado para ejecutarse en su propia computadora y que hace algunas cosas elegantes por usted. Sería bastante impresionante si pudiera hacer doble clic en MySnazzyThing.app
lugar de instalar nodejs y npm y ejecutarlo node mysnazzyapp.js
en la línea de comandos.
El .app
ejecutable pondría en cola el servidor de nodos y abriría una ventana de webkit nativa simple que mostraría lo que normalmente estaría encendido localhost:3000
si estuviera ejecutando en la línea de comando.
Esta aplicación nativa podría, por ejemplo, distribuirse a través de la tienda de aplicaciones de mac. Y bam, una aplicación de escritorio de node.js.
¿Existe alguna herramienta de este tipo? ¿O hay alguna razón técnica por la que esto no funcionaría como lo imagino?
fuente
Opción 1: electrón (también conocido como átomo-capa)
Este es el shell que usa el editor Atom de github. Es muy similar a node-webkit, aunque primero ejecutará el script y tendrá que crear una vista / ventana para el usuario. Hay algunas otras diferencias menores, pero vale la pena analizarlas.
Opción 2: NW.js anteriormente node-webkit
La esencia es que básicamente extiende el motor JS para que pueda escribir una aplicación basada en la web que admita el modelo de objeto extendido del nodo y los módulos ... luego empaqueta sus módulos package.json start.html y archivos js en un zip (con el .nw extensión) y ejecútelo con nw (.exe) .. hay versiones para Windows, Mac y Linux disponibles.
Opción 3: shell Carlo chrom (ium) de Node.
Esto le permitirá iniciar Chrome instalado localmente como un shell que puede conectarse a una aplicación de servidor que se ejecuta localmente. Requiere un cromo local, pero está muy cerca de lo que se pidió.
Opción 4: MacGapNode (solo OSX)
MacGap con integración de nodo (parece que se está volviendo obsoleto)
Aparte: Servicios ...
No puedo hablar por OSX sobre esto como una .App, pero bien podría ser posible crear una instalación de servicio en segundo plano en NodeJS y un enlace a un sitio "local" en el escritorio. La mayoría de los navegadores tienen la opción de no mostrar todas las funciones (sé que Firefox en particular sí).
Sé que su pregunta es para OSX en particular, pero en Windows puede usar NSSM para ejecutar cualquier cosa como un servicio, y lo he usado para servicios basados en NodeJS en Windows. Sin embargo, creo que algunas de las otras opciones anteriores son mejores dependiendo de sus necesidades.
Remoto:
nexe- obsoleto / sin mantenimientoAppJS- reemplazado con DeskShellDeskShell: obsoleto, sitio web sin conexiónnode-webkit -renombrado a NW.jsElproyectoXULRunner seestancó y muy atrasado.Thrust ( adaptador de nodo ): obsoleto / obsoletoEsta respuesta se copia para múltiples preguntas, estas referencias son principalmente para la conveniencia de actualización.
fuente
Sugiero mirar en Topcube, su objetivo es "Dar a los desarrolladores de nodos una forma de tener una GUI de escritorio para sus servidores de nodos utilizando HTML5 + CSS3 como plataforma de GUI". Topcube en github .
fuente
Actualmente hay una gran cantidad de formas de lograr esto.
El claro ganador en el espacio de empaquetar una aplicación node + html5, es actualmente Electron (utilizado por Atom, VSCode, Slack, Discord, etc.).
También puede usar cualquier otro idioma empaquetado como una aplicación (usando herramientas para esos idiomas / pilas), y verificar la instalación de un nodo, iniciar el script del "servidor" con el nodo, luego iniciar el navegador predeterminado (o algún componente de vista web, por algún otro medio), finalmente establezca la ubicación del servicio de nodo. Este es un método muy ligero y eficiente, sin embargo, no está tan bien integrado con el sistema operativo como una solución como Electron.
El principal competidor de Electron aquí es NW.js. Por lo que puedo decir, la característica principal que tiene NW.js que Electron no tiene (todavía) es la compilación / ofuscación. Mientras que Electron facilita las actualizaciones automáticas.
https://electron.atom.io/ https://nwjs.io/
fuente