Измените файл на месте (тот же dest) с помощью Gulp.Яш и подстановка шаблона
у меня есть задача глотка, которая пытается преобразовать .СКС файлы .css-файлы (с помощью gulp-ruby-sass), а затем поместите полученный результат .css файл в том же месте, где он нашел исходный файл. Проблема, поскольку я использую подстановка шаблона, я не обязательно знаю, где хранится файл.
в коде ниже я пытаюсь использовать gulp-tap, чтобы подключиться к потоку и выяснить путь к файлу текущего файла поток был прочитан от кого:
gulp.task('convertSass', function() {
var fileLocation = "";
gulp.src("sass/**/*.scss")
.pipe(sass())
.pipe(tap(function(file,t){
fileLocation = path.dirname(file.path);
console.log(fileLocation);
}))
.pipe(gulp.dest(fileLocation));
});
на основе вывода console.log(fileLocation)
этот код, кажется, что это должно работать нормально. Тем не менее, результирующие файлы CSS, похоже, размещены на один каталог выше, чем я ожидаю. Где он должен быть!--2-->, результирующий путь к файлу просто project/partials
.
если есть гораздо более простой способ сделать это, я бы определенно оценил это решение еще больше. Спасибо!
4 ответов:
как вы и подозревали, вы делаете это слишком сложно. Назначение не должно быть динамическим, так как глобированный путь используется для
dest
Как хорошо. Просто трубы в той же директории, что ты подстановка КГД от, в этом случае "Сасс":gulp.src("sass/**/*.scss") .pipe(sass()) .pipe(gulp.dest("sass"));
Если ваши файлы не имеют общей базы, и вам нужно передать массив путей, этого уже недостаточно. В этом случае вы хотите указать базовую опцию.
var paths = [ "sass/**/*.scss", "vendor/sass/**/*.scss" ]; gulp.src(paths, {base: "./"}) .pipe(sass()) .pipe(gulp.dest("./"));
это проще, чем numbers1311407 привело. Вам не нужно указывать папку назначения вообще, просто используйте
.
. Кроме того, обязательно установите директорию.gulp.src("sass/**/*.scss", { base: "./" }) .pipe(sass()) .pipe(gulp.dest("."));
gulp.src("sass/**/*.scss") .pipe(sass()) .pipe(gulp.dest(function(file) { return file.base; }));
первоначально ответ дан здесь:https://stackoverflow.com/a/29817916/3834540.
Я знаю, что эта тема старая, но она все еще отображается как первый результат в google, поэтому я подумал, что могу также опубликовать ссылку здесь.
Это было очень полезно!
gulp.task("default", function(){ //sass gulp.watch([srcPath + '.scss', '!'+ srcPath +'min.scss']).on("change", function(file) { console.log("Compiling SASS File: " + file.path) return gulp.src(file.path, { base: "./" }) .pipe(sass({style: 'compressed'})) .pipe(rename({suffix: '.min'})) .pipe(sourcemaps.init()) .pipe(autoprefixer({ browsers: ['last 2 versions'], cascade: false })) .pipe(sourcemaps.write('./')) .pipe(gulp.dest(".")); }); //scripts gulp.watch([srcPath + '.js','!'+ srcPath + 'min.js']).on("change", function(file) { console.log("Compiling JS File: " + file.path) gulp.src(file.path, { base: "./" }) .pipe(uglify()) .pipe(rename({suffix: '.min'})) .pipe(gulp.dest(".")); }); })
Comments