grunt之watch续
上一回没有说完,我就是这样,做之前心中波澜壮阔,锦绣山河,等画完小草开始烦躁,完成鲜花出现动摇,然后心神涣散,最后虎头蛇尾。
现在弥补下之前遗漏的问题。
watch(V0.6.1)的tasks和options(github地址)
- watch和之前介绍的plugin有几点不同,首先files的值不是原来对象数组的形式,而是监听的文件的路径的字符串数组。
其次,其他plugin的task结构为target+options,watch多一个属性类型,叫tasks,是监听的文件变动后需要执行的任务队列。
目录结构还是参照之前,源文件夹是src,目标文件夹是dest,先做一个简单的实现。'use strict'; module.exports = function(grunt) { require('load-grunt-tasks')(grunt);
require('time-grunt')(grunt); var path = {
src: 'src',
dest: 'dest'
} grunt.initConfig({
path: path,
copy: {
test: {
files: [
{
expand: true,
cwd: '<%=path.src%>/',
src: '{,*/}*',
dest: '<%=path.dest%>/'
}
]
}
},
watch: {
test: {
tasks: [
'copy'
],
files: '<%=path.src%>/{,*/}*'
}
}
}); grunt.registerTask('default', ['watch']);
}执行grunt后,源文件夹下每有文件的变动,就会将所有文件复制到目标文件夹。
- 开始介绍options
spawn: 是否在子进程中执行tasks,默认为true。相当概念化的东东,换种方式理解。我们在module.exports = function(grunt) 函数的开头加上一句console.log('task name: ' + (process.argv[2] || 'default'));process的nodejs中的api,这句话是打印输入的命令的第二个字符串即执行的task。比如你执行grunt default,第二个字符串就是default,执行grunt,第二个字符串就是undefined。
再次执行grunt,打印出来的内容如下task name: default
Running "watch" task
Waiting...然后修改源文件夹下的内容,接下来显示的内容如下
>> File "src\index.html" changed.
task name: copy
Running "copy:test" (copy) task
Created directories, copied files Done, without errors. Execution Time (-- :: UTC)
loading tasks 3ms ██████ %
copy:test 22ms █████████████████████████████
███████████ %
Total 26ms Completed in .309s at Tue Jan :: GMT+ (台北標準時間) - Waitin
g...又打印出了task name这一行,这意味着当设置此option为true时,每次执行watch中设置的task,都相当于在命令行再次输入grunt taskname。我们把此options设置为false,做同样的操作。
task name: default
Running "watch" task
Waiting...
>> File "src\index.html" changed. Running "copy:test" (copy) task
Created directories, copied files Running "watch" task
Completed in .043s at Tue Jan :: GMT+ (台北標準時間) - Waitin
g...没有再次执行输出task name的代码。
所以,如果你的Gruntfile.js中读取了输入命令的部分值并保存为变量,请将此option设置为false,不然watch启动的task中将读取不到这些变量。
- interrupt: 如果新的变动产生时之前watch启动的task还没执行完,是否中断执行,默认为false
- debounceDelay: 文件变动产生event的最小时间间隔,默认为500ms
- event: 触发监听器的文件变动event类型,可选参数'all'(default)、'changed'、'added'、'deleted'
- reload: 是否重新执行之前执行的命令,一般用于监听Gruntfile.js的变动,默认为false,保持之前spawn的代码,为watch添加一个target
config: {
options: {
reload: true,
spawn: false //按之前spawn的设置将只会打印一次task name
},
files: 'Gruntfile.js'
}执行grunt watch,然后修改Gruntfile.js,打印出来的内容
task name: watch
Running "watch" task
Waiting... Reloading watch config...
task name: watch Running "watch" task
Waiting...
>> File "Gruntfile.js" changed. Running "watch" task
Completed in .017s at Tue Jan :: GMT+ (台北標準時間) - Waitin
g...可见无视了spawn的设定,在本进程重新执行了原来的命令。
- dateFormat: Function,默认就是上面打印出来的时间
- atBegin: 是否在watch开启的时候执行一遍设定的tasks,默认false,样例中设置为true则执行grunt时会先进行一次copy
- livereload: 前一节已经提到过了
- cwd: 因为files不支持设置cwd,所以这里有个这样的option,和files中的功能一样
- livereload: task执行错误的时候是否进行livereload操作,默认为true
至此常用的plugin基本介绍结束,当然还有jshint、htmlmin、imagemin等,github上的链接已经给出,相信看过之前介绍的plugin会养成一种上github看文档的习惯。
下一篇介绍下module.exports = function(grunt){}中传入参数grunt的api,应该也是grunt系列的最后一篇了。
grunt之watch续的更多相关文章
- .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整(续)-使用配置文件动态注入
上次实现了依赖注入,但是web项目必须要引用业务逻辑层和数据存储层的实现,项目解耦并不完全:另一方面,要同时注入业务逻辑层和数据访问层,注入的服务直接写在Startup中显得非常臃肿.理想的方式是,w ...
- [.NET] C# 知识回顾 - 委托 delegate (续)
C# 知识回顾 - 委托 delegate (续) [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6046171.html 序 上篇<C# 知识回 ...
- 初学seaJs模块化开发,利用grunt打包,减少http请求
原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —di ...
- grunt配置任务
这个指南解释了如何使用 Gruntfile 来为你的项目配置task.如果你还不知道 Gruntfile 是什么,请先阅读 快速入门 指南并看看这个Gruntfile 实例. Grunt配置 Grun ...
- 快速开发Grunt插件----压缩js模板
前言 Grunt是一款前端构建工具,帮助我们自动化搭建前端工程.它可以实现自动对js.css.html文件的合并.压缩等一些列操作.Grunt有很多插件,每一款插件实现某个功能,你可以通过npm命名去 ...
- 是时候搁置Grunt,耍一耍gulp了
也算是用了半年Grunt,几个月前也写过一篇它的入门文章(点此查看),不得不说它是前端项目的一个得力助手.不过技术工具跟语言一样日新月异,总会有更好用的新的东西把旧的拍死在沙滩上(当然Grunt肯定没 ...
- 应用Grunt自动化地优化你的项目前端
在不久前我曾写了一篇 应用r.js来优化你的前端 的文章,为大家介绍了r.js这个实用工具,它可以很好地压缩.合并前端文件并打包整个项目.但是如果将r.js放到项目中,我们不得不顾及到一个问题——项目 ...
- Grunt(页面静态引入的文件地址的改变探究)-V2.0
相关插件的引用: grunt-usemin 对页面的操作 grunt-contrib-cssmin 压缩css load-grunt-tasks 瘦身gruntfile grunt-rev给md5 ...
- Grunt基本使用-V1.0
浅语:grunt中文网:http://www.gruntjs.net/ 第一步:Grunt 依赖 Node.js 所以在安装之前确保你安装了 Node.js.然后开始安装 Grunt. 实际上,安装的 ...
随机推荐
- Java的三种代理模式简述
本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下, ...
- AngularJs学习笔记3-服务及过滤器
距离上次别博客有有一段时间了,因为最近公司和个人事情比较多,也因为学习新的知识所以耽搁了,也有人说Angularjs1.5没有人用了,没必要分享,我个人感觉既然开头了我就坚持把他写完,对一些还在使用或 ...
- 小明历险记:规则引擎drools教程一
小明是一家互联网公司的软件工程师,他们公司为了吸引新用户经常会搞活动,小明常常为了做活动加班加点很烦躁,这不今天呀又来了一个活动需求,我们大家一起帮他看看. 小明的烦恼 活动规则是根据用户购买订单的金 ...
- JavaScript高程--<script>标签
<script>标签 在HTML5中script主要有以下几个属性:async,defer,charset,src,type, async(可选): 关键词:异步脚本,外部文件,立即下载: ...
- java中什么样的对象能够进入老年代
1.大对象:所谓的大对象是指需要大量连续内存空间的java对象,最典型的大对象就是那种很长的字符串以及数组,大对象对虚拟机的内存分配就是坏消息,尤其是一些朝生夕灭的短命大对象,写程序时应避免. 2.长 ...
- Hbase集群监控
Hbase集群监控 Hbase Jmx监控 监控每个regionServer的总请求数,readRequestsCount,writeRequestCount,region分裂,region合并,St ...
- WIN10-64+CUDA8.0+OpenCV3.0+VS2015配置
在网上参考了各位前辈的攻略后,捣鼓了两天总算配置成功了. 目前网上多的还是ubuntu上配置CUDA的教程比较多比较详尽,但是我现在就是想在windows10上跑啊,就是想用CUDA啊... 1.CU ...
- 计蒜客模拟赛D1T2 蒜头君的树:树上节点之间最短距离和
题目链接:https://nanti.jisuanke.com/t/16446 题意: 给你一棵有n个节点的树以及每条边的长度,输出树上节点之间的最短距离和.然后进行m次操作,每次操作更改一条边的长度 ...
- APP软件半成品测试技巧
由于现在产品类型的多样性,产品功能的先进性,更多体现在产品质量的稳定性和可靠性.软件应用的领域不断深入,设计的复杂程度逐步扩大,开发的周期不断缩短,质量的要求就逐渐提高.然而根据我们公司的版本迭代速度 ...
- 如何解决修改AzureVM默认RDP端口后,连不上的问题
Enter-PSSession -ComputerName 139.219.135.45 -Port 5986 -Authentication Negotiate -Credential 'mssto ...