2015年9月20日星期日

去掉debug log信息

search了一下,知道目前有一个gulp-strip-debug可以用来去掉 console, alert, and debugger,但是这个不是我想要的,因为我自己封装了一个logger。
再找,说gulp-uglify自己就带的有参数,drop_console可以去掉debugger,也并不是我想要的。另外http://lisperator.net/uglifyjs/compress里面可以定义变量,然后压缩的时候就会去掉里面的代码,这个的确是不错,我用的是gulp-uglify,它后面是call的uglifyjs,看https://www.npmjs.com/package/gulp-uglify
所以可以
  .pipe($.uglify({ compress: {global_defs: {DEBUG: false}}})).on('error', conf.errorHandler('Uglify'))
来传递进去。这样在做production的时候,就会去删掉debug的代码。挺好。但是问题是,岂不是代码里到处都是if (DEBUG)。继续找

最后看到了gulp-defeatureify,直接设置去掉哪些功能,雖然它主要是給ember用的,但是仍然可以給angular用。
    .pipe($.defeatureify({enableStripDebug: true, debugStatements: ['log.debug', 'log.debug.apply']}))
這樣,所有的log.debug代碼就都給去掉了。
 
要留意的是,它删不掉这样的
self(this).log.debug('xxxx')
也就是, debugStatements里面设置的,必须是点[.]下去的的。
 
 

没有评论:

发表评论