2015-02-03 3 views
5

Есть ли способ иметь консольное приложение без GUIless без окон с nw.js?Можно ли создать консольное приложение с nw.js?

У нас есть внутренняя утилита, первоначально сделанная с App.js и недавно преобразованная в nw.js (ранее узел-webkit). Этот инструмент состоит из приложения GUI и консольного (интегрированного в процесс сборки). App.js смог выполнить любые * .js, такие как nodejs, в консоли, но в nw.js для приложения необходимо, чтобы у него было какое-то основное * .html и окно. Даже если в манифесте node-main требуется также поле main.

+4

* «Есть ли способ иметь консольное приложение без GUIless без окон с nw.js?» * Зачем вам это делать? В отличие от использования узла? –

+0

Добавление зависимостей Webkit в 40 МБ только для использования консоли не кажется хорошей идеей. Не можете ли вы просто отправить его с помощью Node.js [binary] (http://nodejs.org/dist/v0.11.16/node.exe)? –

+1

@ ben-fortune, как я уже упоминал, есть и часть GUI этого. Часть GUI используется людьми, консольной частью системой сборки, а иногда и людьми. Я пытаюсь избежать доставки node.js двоичного файла вместе с nw.js, а не наоборот. – k12th

ответ

5

Да, просто добавьте "show": false в package.json

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

Docs для package.json options

Если вы хотите, вы можете сделать app.nw пакет, который будет открыт с узлом-WebKit, так что вам не нужно отправить большой пакет.


Вы также можете сделать обертку для выполнения простых .js файлов из терминала:

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

Так path/wrapper_app будет содержать наше приложение (package.json, index.html), и мы будем требовать указанного файла:

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); 
} 

Затем можно запустить * .js файл, как это:

nw-runner ./my_app.js