如何解决我的 gulpfile 上的 Webp 转换速度非常慢
因此,在这种情况下,在我用于构建网站的模板之一上,我进行了自定义图像压缩和转换过程。我不是gulp 方面的专家,所以我很确定有些事情不完全是应该的,但我不知道如何改进它或如何改进它。我基本上有两个功能,一个是 images()
获取所有新创建/修改的图像并优化它们。然后我有一个 webpTask()
函数来获取图像,复制它并将其转换为 webp。每次处理后,我将处理后的图像保存在另一个文件夹中,以便保留源文件。
因此,当我运行代码并且有多个图像时,如果图像很多,images()
函数有时需要 10-20 秒,而 webpTask()
有时可能需要大约 1-2 分钟完成。特别是 webpTask()
的问题,每次我添加新图像时都会发生,就像它不仅转换最近修改的图像,还转换所有现有图像。我很确定这不是应该的。
这是一个例子:
我记得当我第一次构建它时,我试图将 webp 集成到图像中,但它最终转换了原始图像并只保存了 webp 文件,并且由于兼容性问题,我需要两个版本。所以在那之后,我最终得到了当前的代码。
我使用 node v10.20.1 和 npm v6.14.4 运行它。
除了我的笔记本电脑有相当不错的规格:第 6 代酷睿 i7、32 GB DDR4 RAM、M.2 主 SSD 和用于辅助驱动器的 SATA SSD 以及移动 GeForce 1070。所以它不应该与规格相关。
>这是这两个函数的代码:
function images() {
return gulp
.src(['images/**/*.{gif,png,jpg,svg}'])
.pipe(cache(imagemin([
imageminPngquant({
speed: 1,quality: [0.95,1]
}),imageminZopfli({
more: true
}),imagemin.svgo({
floatPrecision: 3,plugins: [{
removeDoctype: true
},{
removeXMLProcInst: true
},{
removeComments: true
},{
removeMetadata: true
},{
removeEditorsNSData: true
},{
cleanupAttrs: true
},{
inlineStyles: true
},{
minifyStyles: true
},{
convertStyleToAttrs: true
},{
cleanupIDs: true
},{
removeUselessDefs: true
},{
cleanupNumericValues: true
},{
convertColors: true
},{
removeUnknownsAndDefaults: true
},{
removeNonInheritableGroupAttrs: true
},{
removeUselessStrokeAndFill: true
},{
removeViewBox: false
},{
cleanupEnableBackground: true
},{
removeHiddenElems: true
},{
removeEmptyText: true
},{
convertShapeToPath: true
},{
moveElemsAttrsToGroup: true
},{
moveGroupAttrsToElems: true
},{
collapseGroups: true
},{
convertPathData: true
},{
convertTransform: true
},{
removeEmptyAttrs: true
},{
removeEmptyContainers: true
},{
mergePaths: true
},{
removeUnusedNS: true
},{
removeTitle: true
},{
removeDesc: true
}]
}),imageminMozjpeg({
quality: 65
}),])))
.pipe(gulp.dest('../public/images'));
}
function webpTask() {
return gulp
.src(['images/**/*.{gif,jpg}'])
.pipe(webp({
quality: 80,method: 6
}))
.pipe(gulp.dest('../public/images'));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。