From 09632be5f854f815cd7e385602903a3b5e7f68ba Mon Sep 17 00:00:00 2001 From: Jakub Pawlowicz Date: Wed, 14 Dec 2016 17:19:56 +0100 Subject: [PATCH] Exposes inlined stylesheet URIs. Why: * So the list can be printed in debug mode. --- bin/cleancss | 7 +++++++ lib/clean.js | 2 ++ lib/utils/read-sources.js | 10 +++++----- test/binary-test.js | 2 +- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/bin/cleancss b/bin/cleancss index 5f764d64..84285edd 100755 --- a/bin/cleancss +++ b/bin/cleancss @@ -126,6 +126,13 @@ function minify(data) { console.error('Minified: %d bytes', minified.stats.minifiedSize); console.error('Efficiency: %d%', ~~(minified.stats.efficiency * 10000) / 100.0); console.error('Time spent: %dms', minified.stats.timeSpent); + + if (minified.inlinedStylesheets.length > 0) { + console.error('Inlined stylesheets:'); + minified.inlinedStylesheets.forEach(function (uri) { + console.error('- %s', uri); + }); + } } outputFeedback(minified.errors, true); diff --git a/lib/clean.js b/lib/clean.js index 091fa0d0..7d634d06 100644 --- a/lib/clean.js +++ b/lib/clean.js @@ -75,6 +75,7 @@ CleanCSS.prototype.minify = function (input, callback) { timeSpent: 0 }, errors: [], + inlinedStylesheets: [], inputSourceMapTracker: inputSourceMapTracker(), localOnly: !callback, options: this.options, @@ -127,6 +128,7 @@ function optimize(tokens, context) { function withMetadata(output, context) { output.stats = calculateStatsFrom(output.styles, context); output.errors = context.errors; + output.inlinedStylesheets = context.inlinedStylesheets; output.warnings = context.warnings; return output; diff --git a/lib/utils/read-sources.js b/lib/utils/read-sources.js index 418ed6e6..10c4f9dd 100644 --- a/lib/utils/read-sources.js +++ b/lib/utils/read-sources.js @@ -142,7 +142,7 @@ function inlineImports(tokens, externalContext, parentInlinerContext, callback) callback: callback, errors: externalContext.errors, externalContext: externalContext, - imported: parentInlinerContext.imported || [], + inlinedStylesheets: parentInlinerContext.inlinedStylesheets || externalContext.inlinedStylesheets, inlinerOptions: externalContext.options.inliner, isRemote: parentInlinerContext.isRemote || false, localOnly: externalContext.localOnly, @@ -193,7 +193,7 @@ function inlineRemoteStylesheet(uri, mediaQuery, metadata, inlinerContext) { var isAllowed = isAllowedResource(uri, true, inlinerContext.processImportFrom); var originalUri = uri; - if (inlinerContext.imported.indexOf(uri) > -1) { + if (inlinerContext.inlinedStylesheets.indexOf(uri) > -1) { inlinerContext.warnings.push('Ignoring remote @import of "' + uri + '" as it has already been imported.'); inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1); return doInlineImports(inlinerContext); @@ -217,7 +217,7 @@ function inlineRemoteStylesheet(uri, mediaQuery, metadata, inlinerContext) { return doInlineImports(inlinerContext); } - inlinerContext.imported.push(uri); + inlinerContext.inlinedStylesheets.push(uri); loadRemoteResource(uri, inlinerContext.inlinerOptions, function (error, importedStyles) { var sourceHash = {}; @@ -262,7 +262,7 @@ function inlineLocalStylesheet(uri, mediaQuery, metadata, inlinerContext) { var isAllowed = isAllowedResource(uri, false, inlinerContext.processImportFrom); var sourceHash = {}; - if (inlinerContext.imported.indexOf(absolutePath) > -1) { + if (inlinerContext.inlinedStylesheets.indexOf(absolutePath) > -1) { inlinerContext.warnings.push('Ignoring local @import of "' + uri + '" as it has already been imported.'); } else if (!fs.existsSync(absolutePath) || !fs.statSync(absolutePath).isFile()) { inlinerContext.errors.push('Ignoring local @import of "' + uri + '" as resource is missing.'); @@ -275,7 +275,7 @@ function inlineLocalStylesheet(uri, mediaQuery, metadata, inlinerContext) { inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1)); } else { importedStyles = fs.readFileSync(absolutePath, 'utf-8'); - inlinerContext.imported.push(absolutePath); + inlinerContext.inlinedStylesheets.push(absolutePath); sourceHash[relativeToCurrentPath] = { styles: importedStyles diff --git a/test/binary-test.js b/test/binary-test.js index d7fe3fd0..1653c88e 100644 --- a/test/binary-test.js +++ b/test/binary-test.js @@ -113,7 +113,7 @@ vows.describe('./bin/cleancss') }) }) .addBatch({ - 'piped with debug info on inlining': pipedContext('@import url(test/fixtures/imports-min.css);', '-d', { + 'piped with debug info on inlining 123': pipedContext('@import url(test/fixtures/imports-min.css);', '-d', { 'should output inlining info': function (error, stdout, stderr) { assert.include(stderr, path.join(process.cwd(), 'test/fixtures/imports-min.css')); } -- 2.34.1