次の名前のscssソースファイルがstyle.scss
あります/style
:
@import 'reset';
body {
background: #555555;
color: white;
}
そして、次の名前の別のscssソースファイルreset.scss
が存在します/style
:
* {
padding: 0;
margin: 0;
}
これらは sass によってコンパイルされ、style.min.css
内に存在するソース マップが使用され/style
ます。
*{padding:0;margin:0}body{background:#555555;color:white}
/*# sourceMappingURL=style.min.css.map */
これは結果のマップ ファイルで、次の場所にstyle.min.css.map
あります/style
。
{"version":3,"sources":["reset.scss","style.scss"],"names":[],"mappings":"AAAA,CAAC,AAAC,CACA,OAAO,CAAE,CAAE,CACX,MAAM,CAAE,CAAE,CCAZ,ADCC,ICDG,AAAC,CACH,UAAU,CAAE,OAAQ,CACpB,KAAK,CAAE,KAAM,CACd","file":"style.min.css","sourcesContent":["* {\r\n padding: 0;\r\n margin: 0;\r\n}","@import 'reset';\r\n\r\nbody {\r\n background: #555555;\r\n color: white;\r\n}\r\n"],"sourceRoot":"/style"}
私はsassを呼び出すためにgulpを使用しています。関連する構成は次のとおりです。
var gulp = require('gulp');
var rename = require('gulp-rename');
var sourcemaps = require('gulp-sourcemaps');
var sass = require('gulp-sass');
gulp.task('css', function() {
return gulp.src('style/style.scss')
.pipe(sourcemaps.init())
.pipe(sass({outputStyle: 'compressed'}))
.pipe(rename({suffix: '.min'}))
.pipe(sourcemaps.write('.', {addComment: true, sourceRoot: '/style'}))
.pipe(gulp.dest('style/'))
});
WebStorm 11.0.1 はこれを完全に理解しているようです。
Chrome DevTools は、マッピングを正しく理解できません。それは明らかに努力しています。ただし、すべてのマッピングreset.scss
は、正しいファイルと場所ではなく、さまざまな場所を指しています。@import
を の実際のコンテンツに置き換えて両方のファイルを手動で結合するとreset.scss
、マッピングは chrome で正しく機能し、 内の正しい場所を指しますstyle.scss
。
ここで何が起こっているのでしょうか?
編集: Microsoft Edge (Windows 10 の新しい IE) は、ブラウザー内の開発ツール内でマッピングを正しく理解します。
編集 2: Firefox は、まったく同じ方法で Chrome と同じ問題を経験しています。
編集 3:別の scss ソース ファイルを追加しましたtest.scss
:
div {
color: red;
}
次に、これをファイルにインポートしました。style.scss
ファイルは次のようになります。
@import 'reset';
@import 'test';
body {
background: #555555;
color: white;
}
Chrome は複数のソース ファイルがあることを認識しているようですが、マップされた場所が正しくなく、style.scss
決してポイントされません。
繰り返しになりますが、Edge と Webstorm は完全に機能します。Chrome と Firefox には同じ問題があります。