From: Jakub Pawlowicz Date: Sun, 15 Mar 2015 16:47:23 +0000 (+0000) Subject: Adds better internal target handling. X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=5f7483e28fe6dee3ec9b668396a5aee2056c6e19;p=clean-css.git Adds better internal target handling. `target` option is now resolved inside main module. Also added `options.explicitTarget` which resolves to true if target was passed explicitely. --- diff --git a/lib/clean.js b/lib/clean.js index 67f083b0..018992ee 100644 --- a/lib/clean.js +++ b/lib/clean.js @@ -21,6 +21,9 @@ var InputSourceMapTracker = require('./utils/input-source-map-tracker'); var SourceTracker = require('./utils/source-tracker'); var SourceReader = require('./utils/source-reader'); +var fs = require('fs'); +var path = require('path'); + var DEFAULT_TIMEOUT = 5000; var CleanCSS = module.exports = function CleanCSS(options) { @@ -33,6 +36,7 @@ var CleanCSS = module.exports = function CleanCSS(options) { compatibility: new Compatibility(options.compatibility).toOptions(), debug: options.debug, explicitRoot: !!options.root, + explicitTarget: !!options.target, inliner: options.inliner || {}, keepBreaks: options.keepBreaks || false, keepSpecialComments: 'keepSpecialComments' in options ? options.keepSpecialComments : '*', @@ -45,7 +49,7 @@ var CleanCSS = module.exports = function CleanCSS(options) { roundingPrecision: options.roundingPrecision, shorthandCompacting: !!options.sourceMap ? false : (undefined === options.shorthandCompacting ? true : !!options.shorthandCompacting), sourceMap: options.sourceMap, - target: options.target + target: options.target && fs.existsSync(options.target) && fs.statSync(options.target).isDirectory() ? options.target : path.dirname(options.target) }; this.options.inliner.timeout = this.options.inliner.timeout || DEFAULT_TIMEOUT; diff --git a/lib/images/url-rebase.js b/lib/images/url-rebase.js index 6d25470b..76c5fc2b 100644 --- a/lib/images/url-rebase.js +++ b/lib/images/url-rebase.js @@ -12,26 +12,21 @@ UrlRebase.prototype.process = function (data) { var rebaseOpts = { absolute: options.explicitRoot, - relative: !options.explicitRoot && !!options.target, + relative: !options.explicitRoot && options.explicitTarget, fromBase: options.relativeTo }; if (!rebaseOpts.absolute && !rebaseOpts.relative) return data; - if (rebaseOpts.absolute && !!options.target) + if (rebaseOpts.absolute && options.explicitTarget) this.outerContext.warnings.push('Both \'root\' and output file given so rebasing URLs as absolute paths'); if (rebaseOpts.absolute) rebaseOpts.toBase = path.resolve(options.root); - if (rebaseOpts.relative) { - var target = fs.existsSync(options.target) && fs.statSync(options.target).isDirectory() ? - options.target : - path.dirname(options.target); - - rebaseOpts.toBase = path.resolve(target); - } + if (rebaseOpts.relative) + rebaseOpts.toBase = path.resolve(options.target); if (!rebaseOpts.fromBase || !rebaseOpts.toBase) return data; diff --git a/test/source-map-test.js b/test/source-map-test.js index f19a92e7..dd8e3100 100644 --- a/test/source-map-test.js +++ b/test/source-map-test.js @@ -524,7 +524,7 @@ vows.describe('source-map') generatedColumn: 0, originalLine: 2, originalColumn: 8, - source: 'once.less', + source: path.join('test', 'fixtures', 'source-maps', 'nested', 'once.less'), name: null }; assert.deepEqual(minified.sourceMap._mappings._array[0], mapping); @@ -535,7 +535,7 @@ vows.describe('source-map') generatedColumn: 14, originalLine: 3, originalColumn: 4, - source: 'once.less', + source: path.join('test', 'fixtures', 'source-maps', 'nested', 'once.less'), name: null }; assert.deepEqual(minified.sourceMap._mappings._array[1], mapping); @@ -554,7 +554,7 @@ vows.describe('source-map') generatedColumn: 0, originalLine: 3, originalColumn: 4, - source: 'twice.less', + source: path.join('test', 'fixtures', 'source-maps', 'nested', 'twice.less'), name: null }; assert.deepEqual(minified.sourceMap._mappings._array[0], mapping); @@ -565,7 +565,7 @@ vows.describe('source-map') generatedColumn: 11, originalLine: 4, originalColumn: 6, - source: 'twice.less', + source: path.join('test', 'fixtures', 'source-maps', 'nested', 'twice.less'), name: null }; assert.deepEqual(minified.sourceMap._mappings._array[1], mapping); @@ -869,7 +869,7 @@ vows.describe('source-map') generatedColumn: 0, originalLine: 1, originalColumn: 0, - source: 'some.less', + source: path.join('test', 'fixtures', 'source-maps', 'some.less'), name: null }; assert.deepEqual(minified.sourceMap._mappings._array[0], mapping); @@ -880,7 +880,7 @@ vows.describe('source-map') generatedColumn: 4, originalLine: 2, originalColumn: 8, - source: 'once.less', + source: path.join('test', 'fixtures', 'source-maps', 'nested', 'once.less'), name: null }; assert.deepEqual(minified.sourceMap._mappings._array[1], mapping); @@ -891,7 +891,7 @@ vows.describe('source-map') generatedColumn: 18, originalLine: 2, originalColumn: 2, - source: 'some.less', + source: path.join('test', 'fixtures', 'source-maps', 'some.less'), name: null }; assert.deepEqual(minified.sourceMap._mappings._array[2], mapping); @@ -902,7 +902,7 @@ vows.describe('source-map') generatedColumn: 28, originalLine: 1, originalColumn: 4, - source: 'styles.less', + source: path.join('test', 'fixtures', 'source-maps', 'styles.less'), name: null }; assert.deepEqual(minified.sourceMap._mappings._array[3], mapping); @@ -913,7 +913,7 @@ vows.describe('source-map') generatedColumn: 34, originalLine: 2, originalColumn: 2, - source: 'styles.less', + source: path.join('test', 'fixtures', 'source-maps', 'styles.less'), name: null }; assert.deepEqual(minified.sourceMap._mappings._array[4], mapping);