将供应商CSS与LESS组合并在gulp-minify之后将Sourcemap错误

lum*_*mio 6 gulp gulp-less gulp-sourcemaps

我正在尝试执行以下操作:

  1. 合并所有CSS文件(jQuery插件)
  2. 结合媒体查询
  3. 缩小CSS
  4. 写源图

之后我尝试在另一个文件夹中做其他事情

  1. 翻译少
  2. 结合媒体查询
  3. 缩小生成的CSS
  4. 写源图
  5. Autoprefix的东西

看起来像这样:

gulp.task('styles', function() {
  var streamCSS = gulp.src(sources.css)
    .pipe(sourcemaps.init())
    .pipe(concat('vendor.css'))
    .pipe(cmq())
    .pipe(minify({ keepSpecialComments: '*' }))
    .pipe(sourcemaps.write());

  var streamLESS = gulp.src(sources.less)
    .pipe(plumber({ errorHandler: errorHandler }))
    .pipe(sourcemaps.init())
    .pipe(less())
    .on('error', swallowError)
    .pipe(cmq())
    .pipe(minify({ keepSpecialComments: '*' }))
    .pipe(sourcemaps.write())
    .pipe(prefix("last 2 versions", "> 1%", "ios >= 6", { map: true }))
    .on('error', swallowError);

  return es.merge(streamCSS, streamLESS)
    .pipe(plumber({ errorHandler: errorHandler }))
    .pipe(concat('main.css'))
    .pipe(gulp.dest(destinations.css))
    .pipe(connect.reload());
});
Run Code Online (Sandbox Code Playgroud)

我遇到的唯一问题是生成的源映射是错误的,并且始终引用错误的LESS文件.

我使用以下库来实现此目的:

  • 一饮而尽,CONCAT
  • 吞掉少
  • 一饮而尽,autoprefixer
  • 吞掉,结合媒体查询
  • 一饮而尽,sourcemaps
  • 一饮而尽,缩小,CSS

我知道如果我省略供应商的东西它会起作用,但我想只有一个结果样式表.

感谢您的一切建议!

Ghi*_*llo 1

您可以在调用 sourcemap init 函数之前尝试合并流吗?

我还没有机会测试以下代码(省略了许多要求),但您可以有一个想法:

var filter = require('gulp-filter');

var lessFilter = filter('**/*.less');

gulp.task('styles', function() {
    return gulp.src([sources.css, sources.less])
        .pipe(sourcemaps.init())
        .pipe(lessFilter)
        .pipe(less())
        .pipe(filter.restore())
        .pipe(minify({ keepSpecialComments: '*' }))
        .pipe(concat('main.css'))
        .pipe(sourcemaps.write())
        .pipe(gulp.dest(destinations.css))
});
Run Code Online (Sandbox Code Playgroud)