如何让源图包含所有我的LESS文件与gulp

Kar*_*las 6 less gulp gulp-less gulp-sourcemaps

我/ less文件夹中有两个LESS文件:

main.less:

@import 'vars';

body{
  background-color: @blau;
}
Run Code Online (Sandbox Code Playgroud)

和vars.less

@blau : #6621ab;
Run Code Online (Sandbox Code Playgroud)

我的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/'))
});
Run Code Online (Sandbox Code Playgroud)

CSS生成(在/public/main.css)工作正常,但在源图中,我只能看到main.less,而不是vars.less.任何的想法?提前致谢

Bas*_*sen 4

据我了解,您的配置生成以下源映射代码:

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4ubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNFLHlCQUFBIiwiZmlsZSI6Im1haW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAndmFycyc7XG5cbmJvZHl7XG4gIGJhY2tncm91bmQtY29sb3I6IEBibGF1O1xufVxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */
Run Code Online (Sandbox Code Playgroud)

编码版本:

{"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/"}
Run Code Online (Sandbox Code Playgroud)

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/"}
Run Code Online (Sandbox Code Playgroud)

请注意,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
Run Code Online (Sandbox Code Playgroud)

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

  • 嗨巴斯!!通过将 `gulp.src('./less/main.less')` 替换为 `gulp.src('./less/*.less')` 生成 vars.css 文件,并使用它自己的源映射。然后,将 vars.css 包含到我的 html 中,我可以看到它的源代码:D 你知道任何将 vars.less 源映射包含到 main.css 中的技术吗,所以我只需要包含一个文件?谢谢你的时间! (2认同)