2014-11-23 66 views
3

我使用包gulp-lessgulp-sourcemaps。我的较少文件位于Styles/main.less下,但生成的源映射指向source/main.less(其中source/似乎是前缀)。如何解决这个问题,所以源地图正确指向source/Styles/main.less源地图的路径有误

我一饮而尽任务是相当简单:

var gulp  = require('gulp'), 
    less  = require('gulp-less'), 
    gulpif  = require('gulp-if'), 
    sourcemaps = require('gulp-sourcemaps'); 

var paths = { 
    styles: [ 
     'Styles/**/*.less', 
     '!**/*.min.css' 
    ], 
    wwwRoot: 'wwwroot/' 
} 

var isLessFile = function(file) { return /.less$/.test(file.path); } 

gulp.task('styles', function() { 
    return gulp 
     .src(paths.styles) 
     .pipe(sourcemaps.init()) 
      .pipe(gulpif(isLessFile, less())) 
     .pipe(sourcemaps.write('.')) 
     .pipe(gulp.dest(paths.wwwRoot + 'styles')); 
}); 
+0

从[gulp-sourcemaps docs](https://github.com/floridoo/gulp-sourcemaps#write-options)检查'sourceRoot'选项。 – Heikki 2014-11-23 22:18:55

回答

4

sourcemaps.write('.',{includeContent:false, sourceRoot:'../Styles'})

应该为你工作。默认情况下,您将源内容包含在源图文件中,并且sourceRoot可能是'/ source /',这意味着使用嵌入式源文件。 includeContent:false将阻止将源代码嵌入到源代码文件中,您还必须将sourceRoot属性设置为从您将源代码保存到源文件所在位置的相对路径。在我的示例中,它将查找Styles文件夹的一个文件夹,这将作为您的源映射sources阵列中的所有路径的前缀。