2011-08-01 13 views
11

Sería bueno si pudiera poner instrucciones de registro de depuración/consola en mi javascript, luego tener un js minifier/compacter eliminar estos cuando se compila.¿Alguno de estos mininavegadores de JavaScript elimina las declaraciones de depuración?

¿Existe esto?

+0

no estoy seguro de si me unedrstood su pregunta. ¿Qué minifero y por qué? – genesis

+0

eliminar instrucciones de depuración es una expresión regular simple si los argumentos están siempre en una sola línea. No debería ser difícil hacer una búsqueda global de 'alerta' y' consola' para poder encontrar todas las llamadas al depurador. – zzzzBov

+0

Tengo un código del que quiero eliminar comentarios y declaraciones de depuración, pero no minimizo para preservar la capacidad de depuración. No pude encontrar lo que quería, así que terminé escribiendo mi propio script de python para hacer exactamente lo que quería. Mi cerebro me dice que debería haber algo que podría hacer menos de la minificación completa, pero no lo encontré la última vez que miré. – jfriend00

Respuesta

0

Ninguno de los principales minificadores implementa eso, creo que es porque no forma parte de ningún estándar (no están definidos en Internet Explorer, por ejemplo). Esperan que haya declarado su propia función de depuración/javascript.

+0

se identifican en Internet Explorer si tiene un indicador de depuración establecido en las opciones de Internet y tiene visual studio http://stackoverflow.com/questions/170164/debugging-javascript-in-ie/170170#170170 y http: // www.slideshare.net/jboutelle/how-to-debug-javascript-in-ie –

4

No que yo sepa, aunque Cierre compilador de Google le permitirá lograr algo similar si lo desea:

/** @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}); 

Si establece DEBUG_MODE a false (incluso se puede hacer esto en el mandamiento línea si lo desea), luego cuando las optimizaciones avanzadas estén habilitadas (debe hacer algún trabajo si desea usarlas, pero son útiles), se usará la implementación vacía de debug, lo que provocará que las llamadas se realicen. "inline" (optimizado fuera de existencia).

Puede extender esto para tener funciones de depuración más complicadas que las de arriba (que simplemente reenvía a console.log); por ejemplo, podría hacer uno que aceptara un argumento de función que se llama en modo de depuración y no se llama fuera del modo de depuración.

0

En Perl con 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); 

ejemplo de uso: ./jsMinifier.pl js.js js-min.js

Cuestiones relacionadas