diff --git a/README.md b/README.md index d194cf0..d56fdd6 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ neat_html: exclude: ``` - **enable** - Enable the plugin. Defaults to `true`. +- **logger** - Print log switch. Defaults to `true`. - **exclude**: Exclude files **Note:** there are so many params please see '[HTMLMinifier](https://github.com/kangax/html-minifier)' ---------- @@ -37,6 +38,7 @@ neat_css: - '*.min.css' ``` - **enable** - Enable the plugin. Defaults to `true`. +- **logger** - Print log switch. Defaults to `true`. - **exclude**: Exclude files ---------- @@ -52,6 +54,7 @@ neat_js: ``` - **enable** - Enable the plugin. Defaults to `true`. - **mangle**: Mangle file names +- **logger** - Print log switch. Defaults to `true`. - **output**: Output options - **compress**: Compress options - **exclude**: Exclude files diff --git a/index.js b/index.js index 3eb3538..2b9426a 100644 --- a/index.js +++ b/index.js @@ -6,6 +6,7 @@ var assign = require('object-assign'); // HTML minifier hexo.config.neat_html = assign({ enable: true, + logger: true, exclude: [], ignoreCustomComments: [/^\s*more/], removeComments: true, @@ -20,6 +21,7 @@ var assign = require('object-assign'); // Css minifier hexo.config.neat_css = assign({ enable: true, + logger: true, exclude: ['*.min.css'] }, hexo.config.neat_css); @@ -27,6 +29,7 @@ var assign = require('object-assign'); hexo.config.neat_js = assign({ enable: true, mangle: true, + logger: true, output: {}, compress: {}, exclude: ['*.min.js'] diff --git a/lib/filter.js b/lib/filter.js index 8aa00c4..1bdad6d 100644 --- a/lib/filter.js +++ b/lib/filter.js @@ -20,14 +20,16 @@ function logic_html(str, data) { if (path && exclude && exclude.length) { for (var i = 0, len = exclude.length; i < len; i++) { - if (minimatch(path, exclude[i])) return str; + if (minimatch(path, exclude[i], {matchBase: true})) return str; } } - var log = hexo.log || console.log; var result = Htmlminifier(str, options); var saved = ((str.length - result.length) / str.length * 100).toFixed(2); - log.log('neat the html: %s [ %s saved]', path, saved + '%'); + if (options.logger) { + var log = hexo.log || console.log; + log.log('neat the html: %s [ %s saved]', path, saved + '%'); + } var prefix = '"; var end = ''; result = prefix + result + end; @@ -46,20 +48,22 @@ function logic_css(str, data) { if (path && exclude && exclude.length) { for (var i = 0, len = exclude.length; i < len; i++) { - if (minimatch(path, exclude[i])) return str; + if (minimatch(path, exclude[i], {matchBase: true})) return str; } } - var log = hexo.log || console.log; - return new Promise(function(resolve, reject) { - new CleanCSS(options).minify(str, function(err, result) { + return new Promise(function (resolve, reject) { + new CleanCSS(options).minify(str, function (err, result) { if (err) return reject(err); var saved = ((str.length - result.styles.length) / str.length * 100).toFixed(2); var prefix = '/* build time:' + Date().toLocaleString() + "*/\n"; var end = '\n/* rebuild by neat */'; var css_result = prefix + result.styles + end; resolve(css_result); - log.log('neat the css: %s [ %s saved]', path, saved + '%'); + if (options.logger) { + var log = hexo.log || console.log; + log.log('neat the css: %s [ %s saved]', path, saved + '%'); + } }); }); } @@ -76,22 +80,22 @@ function logic_js(str, data) { if (path && exclude && exclude.length) { for (var i = 0, len = exclude.length; i < len; i++) { - if (minimatch(path, exclude[i])) return str; + if (minimatch(path, exclude[i], {matchBase: true})) return str; } } - var log = hexo.log || console; var result = UglifyJS.minify(str, options); var saved = ((str.length - result.code.length) / str.length * 100).toFixed(2); - log.log('neat the js: %s [ %s saved]', path, saved + '%'); + if (options.logger) { + var log = hexo.log || console.log; + log.log('neat the js: %s [ %s saved]', path, saved + '%'); + } var prefix = '// build time:' + Date().toLocaleString() + "\n"; var end = '\n//rebuild by neat '; var js_result = prefix + result.code + end; return js_result; } - - module.exports = { logic_html: logic_html, logic_css: logic_css,