0

我有大约 30 个文件夹,每个文件夹都有 scss 文件。我正在使用gulp-ruby-sass. 现在仍然可以正常工作,今天我创建了新的 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 }))
});
4

2 回答 2

1

似乎没有任何选择gulp-ruby-sass会有所帮助,而且几个月来一直有一个关于这个问题的开放 GitHub 问题,所以我认为你必须使用一个 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寻找适合您的价值。

于 2016-08-27T08:58:54.287 回答
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 }))
});
于 2016-08-28T12:48:26.607 回答