gpt4 book ai didi

javascript - 监视服务器上的文件夹以查找要压缩的新图像

转载 作者:行者123 更新时间:2023-11-30 16:54:28 25 4
gpt4 key购买 nike

我有一个服务器,它上传了很多图片。上传图像的应用程序基于 PHP。但是,我想使用 Node 来查看上传文件夹,然后在任何新图像上运行 imagemin。

我想我会使用 npm 包“watch”和“imagemin”。我不确定如何准确配置它们或如何让它一直运行。

到目前为止,我有以下可以手动打开的:

var Imagemin = require('imagemin');
var watch = require('watch');
var imagemin = new Imagemin()
.use(Imagemin.pngquant());
watch.createMonitor('images', function (monitor) {
monitor.files['images/*.png']
monitor.on("created", function (file) {
compressImage(file);
})
monitor.on("changed", function (file) {
compressImage(file);
});
});

function compressImage(file) {
var dest, path;
path = f.split('/');
path.pop();
dest = path.join('/');
imagemin.src(file).dest(dest).run();
}

添加了几个文件后,我收到了一个关于检测到 可能存在 EventEmitter 内存泄漏的警告。添加了 11 个听众。使用 emitter.setMaxListeners() 增加限制 然后它停止工作。

是否有更好的方法来执行此操作以及如何自动运行它?

最佳答案

为了处理变化时监视函数的递归触发,一种可能的解决方案是:每当你的压缩函数运行时,让它把文件名存储在一个 var 中。在您的更改监听器功能上,只需添加

If (file !== lastFile) {
//do something
}

您可以尝试另一个非常相似的模块,称为 chokidar .

与 watch 有非常相似的钩子(Hook):

watcher.on('add', function(path) { log('File', path, 'has been added'); })
watcher.on('change', function(path) { log('File', path, 'has been changed'); })

此处示例:Watch Files and Directories

关于javascript - 监视服务器上的文件夹以查找要压缩的新图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29951516/

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