2015-04-15 123 views
0

我对gulp比较陌生。我有一个问题,当我试图用他们的sass文件编译一个带有子文件夹的目录时。gulp文件夹编译

文件夹结构:

|_sass 
    |__folder1 
    | |_file.sass 
    |__folder2 
    | |_file.sass 
    |__folder3 
     |_file.sass 

我简单一饮而尽任务会尝试编译

gulp.task('sass', function(){ 
    return sass('sass/') 
    .pipe(gulp.dest('css'); 
} 

上面这个任务不以文件夹的工作,但如果我指定像下面一饮而尽任务文件,它工作正常。

gulp.task('sass', function(){ 
    return sass('sass/folder1/file1.sass') 
    .pipe(gulp.dest('css'); 
} 

我已经检查的计算器的repository (gulp-ruby-sass)等话题与一个解决方案,我已经找到了文档导入所有青菜码到一个文件并对其进行编译。

我曾尝试不同的路径:./sasssasssass/连最后的语法与gulp.src(path/**/*.sass)gulp-sass库为好。

你能帮我吗? 在此先感谢

+0

与gulpfile.js一起使用webstorm – carlosnufe

+0

您找到的解决方案是正确的。创建一个主要的sass文件并导入您想要使用的所有文件。 – donnywals

+0

所以,如果我想分开我的最终css在两个不同的部分我的应用程序我需要两个吞咽任务?我认为这不是方式。 – carlosnufe

回答

1

编辑:使用gulp-sass,不gulp-ruby-sass,因为gulp-ruby-sass也只支持单个文件,如docs提到:

一饮而尽,红宝石青菜不支持水珠呢,只有单个文件或目录。就像萨斯一样。

你应该用有效的水珠参数创建流gulp.src(),而不仅仅是直接调用sass()并把它在一个pipe()

gulp.task('sass', function(){ 
    return gulp.src([ 
    'sass/folder1/file.sass', 
    'sass/folder2/file.sass', 
    'sass/folder3/file.sass' 
    ]) 
    .pipe(sass()) 
    .pipe(gulp.dest('css')); 
}); 

如果你只是想导入正确命名的文件(首发下划线),这应该工作以及:

gulp.task('sass', function(){ 
    return gulp.src('sass/**/*.sass') 
    .pipe(sass()) 
    .pipe(gulp.dest('css')); 
}); 

编辑:修正了一些代码埃罗rs - SO需要一个linter(;

+0

嗨,我不知道'globs'是什么意思,但是稍后它会放上“或目录”。那时我明白了。所以我试着用一个常见错误解释我的过程,“path.join的参数必须是字符串”。这是我的终结,即时通讯仍在寻找,但我不知道如何处理这个错误。 – carlosnufe

+0

你能分享你的更新代码不工作吗? – quoo

+0

我会在其他时间下班后尝试,我告诉你。但很简单,用gulp-ruby-sass我无法编译目录,因为根据naeramatrth7文章是不可能的。并且带着咕噜咕噜声给我一个错误。 – carlosnufe