Вы можете удалить любой из этих javascript minifiers отладочные заявления?

Было бы неплохо, если бы я мог вставлять операторы журнала debug/console в свой javascript, а затем js minifier/compact удалять их при компиляции.

Это существует?

Ответ 1

Не то, что я знаю, хотя 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); например, вы можете создать тот, который принял аргумент функции, который вызывается в режиме отладки и не вызывается вне режима отладки.

Ответ 2

Ни один из основных minifiers реализации, я думаю, это потому, что он не является частью какого-либо стандарта (они, например, undefined в Internet Explorer). Они ожидают, что вы могли бы объявить свою собственную функцию debug/javascript.

Ответ 3

В 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