他们之间的区别是什么?
gulp.src(imgSrc)
.pipe(newer(imgDest))
.pipe(imagemin())
.pipe(gulp.dest(imgDest));
Run Code Online (Sandbox Code Playgroud)
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));
Run Code Online (Sandbox Code Playgroud)
看来gulp-change更强大,因为它提供了一个选项
hasChanged: changed.compareLastModifiedTime
Run Code Online (Sandbox Code Playgroud)
Lim*_* H. 73
我希望现在回答这个问题还为时不晚.我不得不在最近的项目的源代码级别评估它们,这是我的看法.
在核心,此插件比较源文件和dest文件的修改时间(请参阅节点API),以确定源文件是否比dest文件更新,或者根本没有dest文件.这是插件中的相关代码:
var newer = !destFileStats || srcFile.stat.mtime > destFileStats.mtime;
Run Code Online (Sandbox Code Playgroud)
默认情况下,此插件还使用文件的修改时间来决定通过流传递的内容
function compareLastModifiedTime(stream, cb, sourceFile, targetPath) {}
Run Code Online (Sandbox Code Playgroud)
但它更进一步提供了一个比较文件内容SHA1哈希的选项:
function compareSha1Digest(stream, cb, sourceFile, targetPath) {}
Run Code Online (Sandbox Code Playgroud)
这些信息很好地记录在案.
因此从理论上讲,如果你使用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 :)
Gulp-changed仅适用于1:1源:dest映射.如果你需要很多:1,例如当使用gulp concat时,请选择gulp-newer.
我可以建议你可以在你自己的函数中操作路径和文件名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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16555 次 |
| 最近记录: |