【问题标题】:Is it possible to build console application with nw.js?是否可以使用 nw.js 构建控制台应用程序?
【发布时间】:2015-04-02 12:15:51
【问题描述】:

有没有办法使用 nw.js 拥有仅控制台、无 GUI、无窗口的应用程序?

我们有一些内部实用程序最初使用 App.js 制作,最近转换为 nw.js(以前称为 node-webkit)。该工具由 GUI 应用程序和仅控制台(集成到构建过程)对应物组成。 App.js 能够在控制台中执行任何 *.js,如 nodejs,但在 nw.js 中,应用程序似乎必须有一些主 *.html 和窗口。即使 node-main 在清单中,它也需要 main 字段。

【问题讨论】:

  • “有没有办法让 nw.js 拥有仅控制台、无 GUI、无窗口的应用程序?” 你为什么要这样做?而不是仅仅使用 Node?​​span>
  • 添加一个 40mb 的 Webkit 依赖项只是为了使用控制台似乎不是一个好主意。你不能随 Node.js binary 一起发布吗?
  • @ben-fortune,正如我所提到的,其中还有 GUI 部分。 GUI 部分由人类使用,控制台部分由构建系统使用,偶尔也由人类使用。我试图避免将 node.js 二进制文件与 nw.js 一起发送,反之亦然。
  • @T.J.Crowder,因为还有 GUI 应用程序,我试图避免发送另一个二进制文件,因为我已经有一个能够执行 JS 代码的二进制文件。

标签: javascript node-webkit nw.js


【解决方案1】:

是的,只需在 package.json 中添加 "show": false

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

package.json options 的文档

如果您愿意,您可以制作app.nw 包,该包将使用 node-webkit 打开,因此您无需运送大包。


您还可以制作一个包装器来从终端运行简单的.js 文件:

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

所以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

【讨论】:

    猜你喜欢
    • 2012-03-30
    • 2010-12-04
    • 2020-05-05
    • 2011-04-22
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多