它们之间有什么不同?
gulp.src(imgSrc)
.pipe(newer(imgDest))
.pipe(imagemin())
.pipe(gulp.dest(imgDest));gulp.src(SRC)
.pipe(changed(DEST))
// ngmin will only get the files that
// changed since the last time it was run
.pipe(ngmin())
.pipe(gulp.dest(DEST));它似乎更强大,因为它提供了一个选项
hasChanged: changed.compareLastModifiedTime发布于 2015-03-13 08:05:14
我希望现在回答这个问题还不算太晚。我不得不为最近的一个项目在源代码级别对它们进行评估,下面是我的观点。
gulp较新
这个插件的核心是比较源文件和目标文件的修改时间(参见node API),以确定源文件是否比目标文件新,或者是否根本没有目标文件。以下是插件中的相关代码:
var newer = !destFileStats || srcFile.stat.mtime > destFileStats.mtime;gulp changed
缺省情况下,此插件还使用文件的修改时间来决定通过流传递哪个文件
function compareLastModifiedTime(stream, cb, sourceFile, targetPath) {}但它更进一步,提供了一个选项来比较文件的内容SHA1散列:
function compareSha1Digest(stream, cb, sourceFile, targetPath) {}这个信息是很好的documented。
结论
所以从理论上讲,如果你使用gulp-changed的默认hasChanged: changed.compareLastModifiedTime,每个插件的运行速度都是一样快的。如果您使用gulp-changed的hasChanged: changed.compareSha1Digest,那么有理由期望gulp-changed会慢一点,因为它确实会创建文件内容的SHA1散列。我没有进行基准测试,但我也有兴趣看到一些数字。
选择哪一个
gulp changed,纯粹是因为它背后的开发人员(sindresorhus)。如果有一天这个令人敬畏的人决定不再支持他的gulp插件,我想我也会完全停止使用它。
开玩笑的是,gulp changed的源码是gulp-y,而gulp newer的源码读起来就像是另一个节点模块的源码,有很多承诺。因此,另一个+1表示吞咽-已更改:)
巨大的编辑
Gulp changed仅适用于1:1来源:目标映射。如果您需要多:1,例如,当与gulp concat一起使用时,请选择gulp-newer。
发布于 2015-03-20 15:03:41
我建议您使用gulp-newy,您可以在自己的函数中操作路径和文件名。然后,只需使用该函数作为newy()的回调。这使您可以完全控制要比较的文件。
这将允许1:1或多对1比较。
newy(function(projectDir, srcFile, absSrcFile) {
// do whatever you want to here.
// construct your absolute path, change filename suffix, etc.
// then return /foo/bar/filename.suffix as the file to compare against
}

发布于 2014-07-14 18:09:23
为了回答这个问题,你需要比较两个插件的源代码。
正如你所说,gulp changed似乎有更多的选择,更多的使用(它下载了更多的时间)和更多的贡献者,因此,它可以更多地更新和重构,因为它被使用得更多。
由于他们的文档,一些东西可以产生不同的效果。
在这个例子中,对于gulp newer,它的用法是这样的:
gulp.task('default', function() {
gulp.watch(imgSrc, ['images']);
});因此,一旦这个任务开始运行,它似乎只会注意到你在使用这个插件时正在改变的文件。
在gulp-changed上,他们说:“将只获取自上次运行以来更改过的文件”。所以,我没有在一个工作的例子中尝试这一点,这个吞咽更改的过程处理所有文件,然后只处理自上次执行以来更改过的文件,所以它似乎总是“查看”所有文件和内部(md5哈希?没有线索,没有检查源代码)确定文件自上次执行以来是否已更改。这不需要一个观察者。
所有这些,都只是在阅读他们的官方文档。
“在野外测试”将是非常受欢迎的!
https://stackoverflow.com/questions/24730215
复制相似问题