首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gulp较新vs gulp changed

gulp较新vs gulp changed
EN

Stack Overflow用户
提问于 2014-07-14 13:49:32
回答 3查看 17.9K关注 0票数 47

它们之间有什么不同?

gulp-newer

代码语言:javascript
复制
gulp.src(imgSrc)
  .pipe(newer(imgDest))
  .pipe(imagemin())
  .pipe(gulp.dest(imgDest));

gulp-changed

代码语言:javascript
复制
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));

它似乎更强大,因为它提供了一个选项

代码语言:javascript
复制
hasChanged: changed.compareLastModifiedTime
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-13 08:05:14

我希望现在回答这个问题还不算太晚。我不得不为最近的一个项目在源代码级别对它们进行评估,下面是我的观点。

gulp较新

这个插件的核心是比较源文件和目标文件的修改时间(参见node API),以确定源文件是否比目标文件新,或者是否根本没有目标文件。以下是插件中的相关代码:

代码语言:javascript
复制
var newer = !destFileStats || srcFile.stat.mtime > destFileStats.mtime;

gulp changed

缺省情况下,此插件还使用文件的修改时间来决定通过流传递哪个文件

代码语言:javascript
复制
function compareLastModifiedTime(stream, cb, sourceFile, targetPath) {}

但它更进一步,提供了一个选项来比较文件的内容SHA1散列:

代码语言:javascript
复制
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。

票数 73
EN

Stack Overflow用户

发布于 2015-03-20 15:03:41

我建议您使用gulp-newy,您可以在自己的函数中操作路径和文件名。然后,只需使用该函数作为newy()的回调。这使您可以完全控制要比较的文件。

这将允许1:1或多对1比较。

代码语言:javascript
复制
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
}

票数 6
EN

Stack Overflow用户

发布于 2014-07-14 18:09:23

为了回答这个问题,你需要比较两个插件的源代码。

正如你所说,gulp changed似乎有更多的选择,更多的使用(它下载了更多的时间)和更多的贡献者,因此,它可以更多地更新和重构,因为它被使用得更多。

由于他们的文档,一些东西可以产生不同的效果。

在这个例子中,对于gulp newer,它的用法是这样的:

代码语言:javascript
复制
gulp.task('default', function() {
  gulp.watch(imgSrc, ['images']);
});

因此,一旦这个任务开始运行,它似乎只会注意到你在使用这个插件时正在改变的文件。

在gulp-changed上,他们说:“将只获取自上次运行以来更改过的文件”。所以,我没有在一个工作的例子中尝试这一点,这个吞咽更改的过程处理所有文件,然后只处理自上次执行以来更改过的文件,所以它似乎总是“查看”所有文件和内部(md5哈希?没有线索,没有检查源代码)确定文件自上次执行以来是否已更改。这不需要一个观察者。

所有这些,都只是在阅读他们的官方文档。

“在野外测试”将是非常受欢迎的!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24730215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档