Command Line JavaScript Eingabeargumente Probleme während der Verkleinerungs JavaScript in Gedit
-
07-07-2019 - |
Frage
Ich möchte meine JavaScript-Dateien sofort in Gedit minify. Ich habe versucht, es über externe Tools Option tun mit jsmin.js Skript. Ich habe Spider Motor installiert. I gespeichert jsmin.js Datei auf /home/mushex/use/js/jsmin.js und erstellt eine neue Datei mit dem Namen js JSMin-low.js im selben Verzeichnis mit Inhalt
#!/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);
}
Es druckt nicht definiert. Zum Debuggen Ich habe Skript geändert nur in Argumente Druckvorgang durchzuführen, und sah, dass die Eingabe ungültig ist (nicht definiert). Quelle der Datei für das Debuggen war
#!/usr/bin/js
print(arguments[0]);
Aber wenn ich es in der Kommandozeile renne es Ausgabe korrekt ist. Und über gedit andere js Kommandozeilen-Tools arbeiten normal. Wandernde, warum meine Eingabeargumente nicht vorbei.
Hier sind Einstellungen, die ich für dieses Werkzeug in gedit gesetzt.
Einstellungen http://imagebin.org/index.php?mode=image&id= 63960
wird jede Hilfe sehr dankbar Danke.
Lösung
Das Problem ist, dass gedit wird das Dokument in Ihr Programm Standardeingabe zu senden, nicht als Befehlszeilenargument. Die Spider Schale hat eine readline()
Funktion, die eine Zeile von stdin liest, aber es hat bisher keine Möglichkeit zu wissen, wenn Sie erreichen EOF.
Wenn Sie mit Spider File
Unterstützung kompilieren, könnten Sie tun, ist es wahrscheinlich, aber ich habe nie versucht, dass.
Wenn Sie die Rhino Shell , können Sie Java-Klassen direkt wie folgt verwenden:
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();