2015-02-03 18 views
5

Gibt es eine Möglichkeit, eine Console-only, GUIless, fensterlose Anwendung mit nw.js zu haben?Ist es möglich, eine Konsolenanwendung mit nw.js zu erstellen?

Wir haben einige interne Dienstprogramm ursprünglich mit App.js gemacht und vor kurzem zu Nw.js (früher Node-Webkit) konvertiert. Dieses Tool besteht aus einer GUI-App und einem Console-Only-Prozess (in Build-Prozess integriert). App.js konnte alle * .js wie nodejs in der Konsole ausführen, aber in nw.js scheint es zwingend zu sein, dass die Anwendung einige Haupt * .html und Fenster hat. Auch wenn mit node-main in Manifest erfordert es main Feld vorhanden sein.

+4

* "Gibt es eine Möglichkeit, Konsole, GUIless, fensterlose Anwendung mit nw.js zu haben?" * Warum würdest du das tun? Im Gegensatz zur Verwendung von Node? –

+0

Das Hinzufügen einer 40 MB Webkit-Abhängigkeit, nur um die Konsole zu verwenden, scheint keine gute Idee zu sein. Können Sie es nicht einfach mit der Node.js [binary] (http://nodejs.org/dist/v0.11.16/node.exe) versenden? –

+1

@ ben-Vermögen, wie ich bereits erwähnt habe, gibt es auch GUI-Teil davon. GUI-Teil wird von Menschen verwendet, Konsole Teil für Build-System und gelegentlich auch von Menschen. Ich versuche zu vermeiden, node.js binary zusammen mit nw.js zu versenden, nicht umgekehrt. – k12th

Antwort

5

Ja, fügen Sie einfach "show": false in package.json

{ 
    "name": "My CLI App", 
    "main": "index.html", 
    "window": { 
    "show": false 
    } 
} 

Docs für package.json options

Wenn Sie möchten, app.nw Paket machen können, die mit dem Knoten-webkit offen sein, so dass Sie nicht brauchen, großes Paket versenden.


Sie können auch ein Wrapper machen einfach .js Dateien von Terminal laufen:

#!/bin/bash 
# file nw-runner 
BASEDIR=$(dirname $0) 
/Applications/node-webkit.app/Contents/MacOS/node-webkit $BASEDIR/path/wrapper_app "[email protected]" 

So path/wrapper_app wird unsere Anwendung enthalten (package.json index.html) und wir werden angegebene Datei benötigen:

var args = require('gui').App.argv; 
var path = require('path'), fs = require('fs'); 
var runable = path.relative(process.env.PWD, args[0]); 

if (fs.existsSync(runable)) { 
    require(runable); 
} else { 
    process.stdout.write("Can not not find file " + args[0]); 
    process.exit(1); 
} 

kann dann laufen * Js wie diese Datei:

nw-runner ./my_app.js 
Verwandte Themen