version: 0.9b
Bash script to remove console.log
, console.warn
, console...
from javascript and coffeescript files.
First the classic " i am not responsible for any damage, loss of files, rage towards the machine or causing world disasters... " This is my first batch script ever and i have being using it in a controlled environment, hence...EXPECT PROBLEMS, recommendations are very appreciated.
user@machine$ ./consoleaway.sh
Usage: consoleaway.sh options (-f -r) [FILE || FOLDER]
consoleaway -h
Prints this message
consoleaway -f [FILE.js || FILE.coffee]
Process single file
consoleaway -r [FOLDER]
Process folder recursively
WARNING: this will modify your files make sure you back them up
This came out of the necessity to automatically remove the darn console
upon deployment to a production enviroment.
I never felt comfortable neither with overriding the console
object nor any of the options suggested here for that matter, but take a look they might work for you.
If you use node or can afford to spawn a node instance for such tasks i totally recommend groundskeeper as a waaaayyyyy more robust solution.
The script goes trough the file(s) and comments out the beggining of a console
instruction using sed ( available in both Linux and OSX ).
Use it before the linting and/or minification process, that way you can check if the console
removal process caused undesired effects with lint, and you can remove them out with your minification tool hence not weighting on your file.
You can expect the script to work on basic console
declarations, a quick reference can be seen below
this code:
// ALL GOOD
console.log('hello');
var a = 1; console.log(a);
console.log({ ping: "pong" });
console.log(function(){return true});
console.log('one'); console.log('two');
// TROUBLE AHEAD
function heyThere() {
DEBUG && console.log( "Hey There!" );
}
console.log(function(){
console.log('woot');
return true
});
will come out as:
// ALL GOOD
//console.log('hello');
var a = 1; //console.log(a);
//console.log({ ping: "pong" });
//console.log(function(){return true});
//console.log('one'); console.log('two');
// TROUBLE AHEAD
function heyThere() {
DEBUG && //console.log( "Hey There!" );
}
//console.log(function(){
//console.log('woot');
return true
});
The need to have some discipline while writting console
instructions is obvious. The problem is, as it encouters the instruction it comments it out, on the spot, ignoring anything behind, ahead, before or after the instruction. You can probably guess by now that running the script on a already minified file is a big no no.