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) {
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 : '*',
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;
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;
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);
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);
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);
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);
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);
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);
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);
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);
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);