Skip to content

Commit 7715945

Browse files
committed
merge
2 parents 91776b3 + 050724d commit 7715945

File tree

4 files changed

+53
-7
lines changed

4 files changed

+53
-7
lines changed

index.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,26 @@ module.exports = function (options) {
4242
opts.includePaths = [fileDir];
4343
}
4444

45-
// temporary hack to target a change (mistake?) in nodeSass.
4645
opts.includePath = opts.includePaths;
4746

48-
opts.success = function (css, map) {
49-
var sourceMap;
50-
if (typeof opts.onSuccess === 'function') opts.onSuccess(css, map);
47+
opts.success = function (css, sourceMap) {
48+
if (typeof opts.onSuccess === 'function') opts.onSuccess(css, sourceMap);
5149

52-
if (map) {
50+
if (sourceMap) {
5351
// hack to remove the already added sourceMappingURL from libsass
5452
css = css.replace(/\/\*#\s*sourceMappingURL\=.*\*\//, '');
5553

56-
applySourceMap(file, map);
54+
// libsass gives us sources' paths relative to file;
55+
// gulp-sourcemaps needs sources' paths relative to file.base;
56+
// so alter the sources' paths to please gulp-sourcemaps.
57+
sourceMap = JSON.parse(sourceMap);
58+
sourceMap.sources = sourceMap.sources.map(function(source) {
59+
var abs = path.resolve(path.dirname(file.path), source);
60+
return path.relative(file.base, abs);
61+
});
62+
sourceMap = JSON.stringify(sourceMap);
63+
64+
applySourceMap(file, sourceMap);
5765
}
5866
handleOutput(css, file, cb);
5967
};

test/scss/includes/_cats.scss

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
11
$blue: #3bbfce;
2-
$margin: 16px;
2+
$margin: 16px;
3+
4+
body {
5+
background: pink;
6+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@import "../inheritance";

test/test.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,36 @@ test('call custom error callback when opts.onError is given', function (t) {
140140

141141
stream.write(errorFile);
142142
});
143+
144+
test('sourcemaps', function (t) {
145+
var sassFile = createVinyl('subdir/multilevelimport.scss');
146+
147+
// Pretend sourcemap.init() happened by mimicking
148+
// the object it would create.
149+
sassFile.sourceMap = {
150+
version: 3,
151+
file: 'scss/subdir/multilevelimport.scss',
152+
names: [],
153+
mappings: '',
154+
sources: [ 'scss/subdir/multilevelimport.scss' ],
155+
sourcesContent: [ '@import "../inheritance";\n' ]
156+
};
157+
158+
// Expected sources are relative to file.base
159+
var expectedSources = [
160+
'includes/_cats.scss',
161+
'inheritance.scss'
162+
];
163+
164+
var stream = gsass();
165+
166+
stream.on('data', function (cssFile) {
167+
t.deepEqual(
168+
cssFile.sourceMap.sources,
169+
expectedSources,
170+
'sourcemap paths are relative to file.base'
171+
);
172+
t.end();
173+
});
174+
stream.write(sassFile);
175+
});

0 commit comments

Comments
 (0)