我的src文件夹中有不同的*.scss
文件,我希望将一个文件编译在自己的单独文件夹中。
假设我有文件normalFile_1.scss
、specialFile.scss
、normalFile_2.scss
。我希望将两个普通文件编译到文件夹Public/Css
,但是特殊文件应该最终出现在文件夹Public/Css/Special
中。
我尝试使用 gulp-tap
获取任务中的当前文件名,这工作正常。
.pipe($.tap(function (file, t) {
filename = path.basename(file.path);
console.log(filename); //outputs normalFile_1.css, specialFile.css, normalFile_2.css
}))
有了gulp-if
,我想根据filename
变量切换输出文件夹(PATHS.dist 是输出"根"文件夹Public
(:
.pipe($.if(filename == 'specialFile.css', gulp.dest(PATHS.dist + '/Css/Special'), gulp.dest(PATHS.dist + '/Css')));
但所有内容最终仍位于Public/Css
文件夹中。为什么这不起作用?这甚至是一个尝试实现这一目标的好方法还是有更好的方法?
显示有两种方法可以执行此操作:
var gulp = require("gulp");
var sass = require("gulp-sass");
var rename = require("gulp-rename");
var path = require('path');
gulp.task('sass', function () {
return gulp.src('src/*.scss')
.pipe(sass().on('error', sass.logError))
.pipe(rename(function (path) {
if (path.basename == "specialFile") {
path.dirname = "Special";
}
}))
.pipe(gulp.dest('Public/Css'))
// .pipe(gulp.dest(function(file) {
// var temp = file.path.split(path.sep);
// var baseName = temp[temp.length - 1].split('.')[0];
// console.log(baseName);
// if (baseName == "specialFile") {
// return 'Public/Css/Special';
// }
// else return 'Public/Css';
// }))
});
gulp.task('default', ['sass']);
显然,我建议重命名版本。
[为什么一个简单的 file.stem 或 file.basename 在我不知道的 gulp.dest(function (file( {} 版本中对我不起作用 - 这肯定会更容易,但我只是没有定义。