如何使用gulp让sourcemaps包含我所有的LESS文件?

6
我在我的 /less 文件夹中有两个 LESS 文件:
main.less:
@import 'vars';

body{
  background-color: @blau;
}

and vars.less

@blau : #6621ab;

我的Gulp任务使用了gulp-less和gulp-sourcemaps。
gulp.task('less', function () {
  gulp.src('./less/main.less')
    .pipe(sourcemaps.init())
    .pipe(less())
    .pipe(sourcemaps.write())
    .pipe(gulp.dest('./public/'))
});

CSS的生成(位于/public/main.css)正常,但在sourcemaps中,我只能看到main.less,而无法看到vars.less。有任何想法吗?谢谢。
1个回答

4
据我理解,您的配置生成以下源代码映射:
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4ubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNFLHlCQUFBIiwiZmlsZSI6Im1haW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAndmFycyc7XG5cbmJvZHl7XG4gIGJhY2tncm91bmQtY29sb3I6IEBibGF1O1xufVxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */

编码版本:
{"version":3,"sources":["main.less"],"names":[],"mappings":"AAEA;EACE,yBAAA","file":"main.css","sourcesContent":["@import 'vars';\n\nbody{\n  background-color: @blau;\n}\n"],"sourceRoot":"/source/"}

您的vars.less没有生成任何CSS输出,因此不应该包含在源映射中。

一旦您的vars.less生成输出,例如在文件末尾添加.selector {p:1;},该文件也将包含在源映射中:

{"version":3,"sources":["vars.less","main.less"],"names":[],"mappings":"AACA;EAAW,IAAA;;ACCX;EACE,yBAAA","file":"main.css","sourcesContent":["@blau : #6621ab;\n.selector {p:1;}\n","@import 'vars';\n\nbody{\n  background-color: @blau;\n}\n"],"sourceRoot":"/source/"}

请注意,lessc编译器有不同的源代码映射选项:
  --source-map[=FILENAME]  Outputs a v3 sourcemap to the filename (or output filename.map)
  --source-map-rootpath=X  adds this path onto the sourcemap filename and less file paths
  --source-map-basepath=X  Sets sourcemap base path, defaults to current working directory.
  --source-map-less-inline puts the less files into the map instead of referencing them
  --source-map-map-inline  puts the map (and any less files) into the output css file
  --source-map-url=URL     the complete url and filename put in the less file

gulp-sourcemaps会输出与使用--source-map-less-inline--source-map-map-inline选项编译的结果相同。


2
嗨,Bass!通过将 gulp.src('./less/main.less') 替换为 gulp.src('./less/*.less'),它可以生成 vars.css 文件,并附带自己的源映射。然后,将 vars.css 包含在我的 HTML 中,我就可以看到它的源代码:D 你知道任何技术可以将 vars.less 的源映射包含到 main.css 中,这样我只需要包含一个文件吗?感谢您的时间! - Karlas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接