Imballaggio di una app web node.js come normale app desktop

Ho cercato un po ‘ma non riesco a trovare uno strumento esistente per questo.

Ho un server web node.js che è progettato per funzionare sul tuo computer che fa cose sgargianti per te. Sarebbe davvero fantastico se potessi fare doppio clic su MySnazzyThing.app invece di installare nodejs e npm e il node mysnazzyapp.js esecuzione node mysnazzyapp.js sulla riga di comando.

L’eseguibile .app lo spooling del server del nodo e aprirà una semplice finestra del webkit nativo che mostrerebbe cosa sarebbe normalmente su localhost:3000 se fossi in esecuzione sulla riga di comando.

Quindi, questa app nativa potrebbe essere distribuita attraverso l’app store mac. E bam, un’app desktop node.js.

Esiste uno strumento del genere? O ci sono motivi tecnici che questo non funzionerebbe come immagino?

    Puoi farlo utilizzando AppJS: https://github.com/appjs/appjs

    Opzione 1: elettrone (noto anche come atom-shell)

    Questa è la shell che usa l’editor Atom di github. È molto simile a node-webkit, sebbene eseguirà prima lo script e dovrai creare una vista / finestra per l’utente. Ci sono altre piccole differenze, ma vale la pena guardare.


    Opzione 2: NW.js precedentemente node-webkit

    L’essenza è che sostanzialmente estende il motore JS per scrivere un’app basata sul Web che supporta il modello di oggetti esteso del nodo e moduli … quindi pacchetti i tuoi file package.json start.html e js in un file zip (con il .nw estensione) ed eseguirlo con nw (.exe) .. ci sono build di windows, mac e linux disponibili.


    Opzione 3: Thrust ( Node Adapter )

    Si tratta di un legame davvero scarso attorno a webkit / chrome con un canale ipc a un’applicazione di avvio. Puoi utilizzare il canale dei messaggi o scrivere l’app come un’app più tradizionale sul lato server nel nodo e controllare l’avvio di una finestra. Che potrebbe metterti in mostra bene.

    Thrust ha associazioni per più lingue. Metto questo davanti a MacGapNode solo perché sto privilegiando le opzioni multipiattaforma prima.


    Opzione 4: MacGapNode (solo OSX)

    MacGap con integrazione del nodo (sembra stia diventando obsoleto)


    A parte: servizi …

    Non posso parlare per OSX in questo caso come .App, ma potrebbe essere ansible creare un’installazione di servizio in background in NodeJS e un collegamento a un sito “locale” sul desktop. La maggior parte dei browser ha un’opzione per non mostrare tutte le funzionalità (so che Firefox in particolare lo fa).

    So che la tua domanda riguarda OSX in particolare, ma in Windows puoi usare NSSM per eseguire qualsiasi cosa come servizio, e l’ho usato per i servizi basati su NodeJS in Windows. Penso che alcune delle altre opzioni sopra siano migliori a seconda delle esigenze.


    Rimosso:

    • nexe – stantio / non mantenuto
    • AppJS – sostituito con DeskShell
    • DeskShell : obsoleto , sito Web offline
    • node- webkit -renamed to NW.js
    • Il progetto XULRunner si è fermato, ed estremamente dietro.

    Questa risposta viene copiata per più domande, questi riferimenti sono principalmente per l’aggiornamento convenienza.

    • Imballaggio di una app web node.js come normale app desktop [chiusa]
    • Imballa un’app Node.js come app osx

    Suggerisco di guardare in Topcube, l’objective è di “dare agli sviluppatori di nodes un modo per avere una GUI desktop per i loro server di nodo usando HTML5 + CSS3 come piattaforma GUI”. Topcube su Github .

    Attualmente ci sono una moltitudine di modi per realizzare questo.

    Il chiaro vincitore nello spazio per il packaging di un’app nodo + html5 è attualmente Electron (utilizzato da Atom, VSCode, Slack, Discord, ecc.).

    Puoi anche utilizzare qualsiasi altra lingua impacchettata come app (usando gli strumenti per quelle lingue / stack), controllare l’installazione di un nodo, avviare lo script “server” con nodo, quindi avviare il browser predefinito (o qualche componente di visualizzazione web, da altri mezzi), infine impostare la posizione sul servizio del nodo. Questo è un metodo molto leggero ed efficiente, tuttavia non altrettanto integrato con il sistema operativo come soluzione come Electron.

    Il principale concorrente di Electron qui, è NW.js. Per quanto ne so, la caratteristica principale che NW.js ha che Electron non è (ancora) è la compilazione / offuscamento. Mentre Electron rende gli aggiornamenti automatici facili.

    https://electron.atom.io/ https://nwjs.io/

    Non puoi farlo con uno script bash? Non so abbastanza per fornire i dettagli, ma questa è probabilmente la strada da percorrere.