gpt4 book ai didi

javascript - src 的 gulp 搜索文件夹并保存到父文件夹

转载 作者:行者123 更新时间:2023-11-29 21:04:20 26 4
gpt4 key购买 nike

我正在尝试让 gulp 任务遍历给定目录,在所有子目录中搜索(递归地在它们内部也遍历所有可能的子目录)以查找具有特定名称 (src) 的文件夹,并将目标指向父文件夹。

因此,每个在名为 SRC 中的文件夹都将成为该 SRC 文件夹中图像的目的地。文件将以相同的名称保存

这是我目前所拥有的:

 gulp.task('img', function() {

gulp.src('../../../uploads/slider-images/**/src/*.jpg')

.pipe(plumber(plumberErrorHandler))

.pipe(imagemin({

optimizationLevel: 7,

progressive: true

}))

.pipe(gulp.dest(function (file) {
var destPath = file.base.split("/").pop().join('/');
return destPath;
}));

});

虽然它不起作用,但“压缩图像”仍为 0,我必须退出该过程。

感谢任何帮助

编辑

示例文件夹结构

--gulpFolder

--testimages

--headers

--src

--funky

--src

现在我得到了这段代码:

gulp.task('img', function () {
let plumberErrorHandler = (err) => {
console.log('Plumber Err', err);
};
var sourcePath = '../testimages/';
var endPath;
return gulp.src(sourcePath + '**/src/**/*.jpg')
.pipe(plumber(plumberErrorHandler))

.pipe(imagemin({
optimizationLevel: 6,
progressive: true
}))
.pipe(rename(function(file) {
let dir = file.dirname.split('\\');
dir.pop();
file.dirname = dir.join('/');
endPath = sourcePath + file.dirname + '/';
gutil.log(file);
}))
.pipe(gulp.dest(function(file) {
return endPath;
}));
});

它记录了文件的正确属性,但我不知道为什么它总是重新创建一个名为“headers”的文件夹并将图像保存在那里。在示例中,它在“headers”文件夹中创建了一个名为 headers 的文件夹,在“funky”文件夹中创建了另一个文件夹,并将图像保存在其中。

最佳答案

我认为它只是没有设置正确的路径(.pop() 的行为与您预期的不同),尝试使用 gulp-imagemin 并设置目标。如果我理解你的用例是正确的:

# before
../../images/one/src/img.jpg
../../images/two/src/img.jpg
# after run
../../images/two/img.jpg
../../images/one/src/img.jpg
../../images/two/img.jpg
../../images/one/src/img.jpg

对于那种情况,这将是实现:

const path = require('path');
const gulp = require('gulp');
const imagemin = require('gulp-imagemin');
const plumber = require('gulp-plumber');
const rename = require('gulp-rename');

gulp.task('img', function () {
let plumberErrorHandler = (err) => {
console.log('Plumber Err', err);
};
const sourcePath = '...//testimages';
return gulp.src(path.join(sourcePath, '/**/src/**/*.jpg'))
.pipe(plumber(plumberErrorHandler))

.pipe(imagemin({
optimizationLevel: 0,
progressive: true
}))
.pipe(rename(function(file) {
let dir = file.dirname.split('/');
dir.pop(); // remark - pop removes the src in this case
file.dirname = path.join(sourcePath, dir.join('/'));
}))
.pipe(gulp.dest(function(file) {
return sourcePath;
}));

});

关于javascript - src 的 gulp 搜索文件夹并保存到父文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44782860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com