Было бы неплохо, если бы я мог вставлять операторы журнала debug/console в свой javascript, а затем js minifier/compact удалять их при компиляции.
Это существует?
Было бы неплохо, если бы я мог вставлять операторы журнала debug/console в свой javascript, а затем js minifier/compact удалять их при компиляции.
Это существует?
Не то, что я знаю, хотя Google Closure Compiler позволит вам выполнить что-то подобное, если хотите:
/** @define {boolean} */
var DEBUG_MODE = true;
var debug;
if (DEBUG_MODE) {
/** @param {...} args */
debug = function(args) { console.log.apply(console, arguments); }
} else {
/** @param {...} args */
debug = function(args) {}
}
debug('foo', {a: 5});
Если вы установили DEBUG_MODE
в false
(вы даже можете сделать это в командной строке, если хотите), тогда, когда расширенные оптимизации включены (вы должны выполнить некоторую работу, если хотите их использовать, но они 're handy), вместо этого будет использоваться пустая реализация debug
, которая вызовет его обращение к "inlined" (оптимизированное из существования).
Вы можете расширить это, чтобы иметь более сложные функции отладки, чем выше (что просто переводит на console.log
); например, вы можете создать тот, который принял аргумент функции, который вызывается в режиме отладки и не вызывается вне режима отладки.
Ни один из основных minifiers реализации, я думаю, это потому, что он не является частью какого-либо стандарта (они, например, undefined в Internet Explorer). Они ожидают, что вы могли бы объявить свою собственную функцию debug/javascript.
В Perl с JavaScript:: Minifier
#!/usr/bin/perl -w
use strict;
use JavaScript::Minifier qw(minify);
open(INFILE, $ARGV[0]) or die;
open(OUTFILE, ">$ARGV[1]") or die;
my $minJs = minify(input => *INFILE, stripDebug => 1);
$minJs =~ s#console.log\(.*\);##g;
$minJs =~ s#alert\(.*\);##g;
print OUTFILE $minJs;
close(INFILE);
close(OUTFILE);
пример использования: ./jsMinifier.pl js.js js-min.js