gulp-ruby-sass错误命令行太长

时间:2016-08-27 07:44:47

标签: sass gulp gulp-ruby-sass

我有大约30个文件夹,每个文件夹都有scss文件。我正在使用gulp-ruby-sass编译scss。现在它工作正常,今天我创建了新的scss文件然后它开始给出以下错误

  

命令行太长了。

我搜索并了解命令提示符在一定长度后无法处理cmd。但我不知道如何克服这个问题。请在下面查找我的gulp任务

gulp.task('compile-css', function() {
return sass(src + '/app/**/*.scss', { base: 'app' })
    .pipe(gulp.dest(dest + '/app'))
    .pipe(browserSync.reload({ stream: true }))
});

2 个答案:

答案 0 :(得分:1)

gulp-ruby-sass似乎没有任何可以帮助的选项,而且现在已经有open GitHub issue about this problem几个月了,所以我认为你&#39 ;我必须通过一个hacky解决方法来实现。

我唯一能想到的是将所有SCSS文件分成批处理并为每个批处理调用sass一次,然后使用merge-stream合并生成的流。

要执行此操作,您必须先找到所有SCSS文件,这意味着您需要直接使用glob

这就是这样一个解决方案的样子:

var glob = require('glob'); 
var merge  = require('merge-stream');

var maxArgs = 1000;

gulp.task('compile-css', function() {
  var files = glob.sync(src + '/app/**/*.scss');
  var stream = merge();
  while (files.length) {
    stream.add(sass(files.splice(0, maxArgs), { base:'app' }));
  };
  return stream
    .pipe(gulp.dest(dest + '/app'))
    .pipe(browserSync.reload({ stream: true }))
});

您必须使用maxArgs来寻找适合您的价值。

答案 1 :(得分:0)

下面的代码是基于Sven Schoenung回答而写的,在循环中进行了小修改

gulp.task('compile-css', function() {
var files = glob.sync(src + '/app/**/*.scss');
var stream = merge();

for (var i = 0; i < files.length; i++) {
    var file = files[i];
    stream.add(sass(file, { base: 'app' }));
}

return stream
    .pipe(gulp.dest(dest + '/app'))
    .pipe(browserSync.reload({ stream: true }))
});