我有大约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 }))
});
答案 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 }))
});