对gulp-changed插件的一点思考
来源:互联网 发布:如何骂淘宝天下小二 编辑:程序博客网 时间:2024/05/02 02:31
对gulp-changed插件的一点思考
gulp-changed插件的作用,是用来过滤未被修改过的文件,只有修改后的文件才能通过管道。这样做的好处时,只处理修改后的文件,减少后续程序的执行时间。根据官方给出的例子:
检测SRC中的文件,然后把从changed()
通过的文件输出到DEST文件夹中,然后继续进行后续的操作。在这之前,我写的代码是这样子的,没有传入参数,也没有输出到某文件夹中(gulp.dest(DEST)
):
然后发现,每次执行时,所有的文件都会通过管道,根本没有过滤的作用。看了源代码之后才知道,传递参数和文件输出是必须
的,因为程序里是拿两个文件夹SRC和DEST里的文件进行对比的。
每当检测一个程序时,都会去DEST里的文件夹里寻找这个对应的文件,若DEST最后修改时间发生变化或内容已更新,则表明这是一个新文件,通过管道,否则保留。程序里目前使用的是两个文件最后修改时间的对比,若SRC里的文件的最后修改时间比DEST里文件的最后修改时间要大,说明该文件被修改过。
当然,gulp-changed
还提供了一种比较函数:内容的对比。将源文件和目标文件的内容进行sha1
加密后,比较两者的加密串,若不相同,则通过管道。可通过传递参数修改比对函数:
当然,你可以传递自己定义的函数,但是需支持以下4个参数:
stream
文件通过对比后将sourceFile
添加到队列中callback
函数里的代码执行完毕后的回调函数sourceFile
vinyl 文件对象destPath
与sourceFile
文件对比的目标文件路径
源码讲解
这个方法里,是对两个文件最后修改时间的对比
这里有个疑问的地方:
若目标文件不存在,则当前情况是无法进行比较的,只能在运行一次之后,产生了目标文件;再修改源文件才能进行对比;新添加的文件同理
mtime, atime, ctime
上面中的mtime
表示修改时间,此外,文件还几个跟时间有关的属性,这里也稍微的讲解一下。
atime-access time
该字段表示文件中的数据最后一次被访问的时间--通过unix进行直接读取或通过命令行和脚本读取。
ctime-change time
当您更改文件的所有权或访问权限时,ctime也随之变化。当然,内容更新时,ctime也会发生改变。
mtime-modify time
最后修改时间显示上次更改文件内容的时间。它不与文件权限的变化而变化,并因此用于跟踪文件内容的实际变化。
通过ls
显示这三种时间
最简单的确认这些时间的方式是使用ls
命令,我现在用的是windows系统,安装了一个ConEmu。
使用ls -l
显示的时间就是当前文件最后一次修改的时间,即mtime:
使用ls -lu
显示的是文件最后一次被访问的时间,即atime:
使用ls -lc
显示的是文件最后一次权限被修改的时间,即ctime:
通过stat
显示这三种时间
使用stat
命令可以显示这个文件更加详细的信息:
文章地址:https://www.xiabingbao.com/gulp/2016/01/20/gulp-changed-ponder.html#mtime-atime-ctime
- 对gulp-changed插件的一点思考
- 对计算机技术的一点思考
- 对中断的一点思考
- 对FriendFeed的一点思考
- 对测试的一点思考
- 对项目的一点思考
- 对学术研究的一点思考
- 对项目的一点思考
- 对人生的一点思考
- 对编程的一点思考
- 对学术规范的一点思考
- 对临时对象的一点思考
- 对易语言的一点思考。
- 对SQL注入的一点思考
- 我对软件开发的一点思考
- 对协处理器的一点思考
- 对数据挖掘应用的一点思考
- 对约定优于配置的一点思考
- 20个CSS高级技巧汇总
- ionic3开发系列——实现对手机软件键盘按键的监听
- 单隐层神经网络拟合任意函数
- 【人工智能工程师】掌握这10个项目,秒杀90%面试者!
- python的requests快速上手、高级用法和身份认证
- 对gulp-changed插件的一点思考
- leetcode 167[easy]---Two Sum II
- Java的构造方法链
- Java Socket编程和TCP/IP协议
- git的分支管理
- Redis新特性GEOHASH
- laravel项目登录不了的问题
- linux cpufreq framework(3)_cpufreq core
- 一派胡言!敢说我们程序员是出轨率最高的群体?