我想立即在Gedit中缩小我的JavaScript文件。我尝试使用 jsmin.js 脚本通过外部工具选项执行此操作。我安装了SpiderMonkey引擎。我在 /home/mushex/use/js/jsmin.js 中存储了 jsmin.js 文件并创建了一个名为 jsmin-low.js的新js文件与内容相同的目录

#!/usr/bin/js 

load('/home/mushex/use/js/jsmin.js');

var body = arguments[0],
    result = jsmin('', body, 1);
if (result) {
    print(result);
} else {
    print(body);
}

打印出undefined。为了调试我已经更改了脚本以仅在参数打印操作中执行,并且看到输入为null(未定义)。调试文件的来源是

#!/usr/bin/js 
print(arguments[0]);

但是当我在命令行中运行它时它的输出是正确的。并通过gedit其他js命令行工具正常工作。徘徊为什么我的输入参数没有通过。

以下是我在gedit中为此工具设置的设置。

设置http://imagebin.org/index.php?mode=image& ID = 63960

任何帮助将不胜感激 感谢。

有帮助吗?

解决方案

问题是gedit正在将文档发送到程序的标准输入中,而不是作为命令行参数。 SpiderMonkey shell有一个 readline()函数,它从stdin中读取一行,但它没有办法知道你何时达到EOF。

如果您使用 File 支持编译SpiderMonkey,您可能会这样做,但我从未尝试过。

如果您使用 Rhino shell ,您可以直接使用Java类:

function readStdin() {
    var stdin = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.System["in"]));
    var lines = [];
    var line;
    while ((line = stdin.readLine()) !== null) {
        lines.push(line);
    }
    return lines.join("\n");
}

var body = readStdin();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top