Grunt watch 跑起来后,还要防止任务越绑越重
· 阅读需 2 分钟
Grunt watch 刚接进项目时,体验真的很好。改一个文件,自动检查、自动编译、自动刷新,前端开发节奏会立刻顺起来。但 2013 年我在几个页面项目里把它用深之后,也很快遇到另一个问题:watch 一旦开始什么都监听、什么都触发,最后开发环境会变得越来越重。
Grunt watch 刚接进项目时,体验真的很好。改一个文件,自动检查、自动编译、自动刷新,前端开发节奏会立刻顺起来。但 2013 年我在几个页面项目里把它用深之后,也很快遇到另一个问题:watch 一旦开始什么都监听、什么都触发,最后开发环境会变得越来越重。
很多人第一次给 Grunt 配任务,会优先想到压缩和拼接,因为这些动作看起来最像“构建”。但如果从每天写代码的体验来看,更能拉开效率差距的其实是另一组能力:保存文件后自动检查、自动重跑任务、自动刷新页面。
2013 年前端工程化还远没有今天这么成熟,但团队已经开始意识到:文件压缩、拼接、编译、监听这些工作,不能一直靠手工做。
Bower 刚流行起来时,很多人最兴奋的是“前端终于也能装依赖了”。但真把它放进项目以后,很快就会碰到另一个更实际的问题:第三方库装到哪里,业务代码放到哪里,Grunt 打包时又该从哪些目录取文件。
刚接触 Grunt 时,很容易因为插件多、示例多,直接把 concat、uglify、watch、cssmin 全塞进一个 default 任务里。命令虽然能跑,但过不了几天就会发现:自己已经分不清到底哪个任务给开发环境用,哪个任务给上线打包用。