Grunt 使用技巧

Flying
2015-09-25 / 0 评论 / 112 阅读 / 正在检测是否收录...

使用 Grunt 已经有一段时间了,最近做的好几个项目都用到了 Grunt,它不仅改善了前端开发流程,也让前端代码发布轻松了许多。本文将不会介绍 Grunt 基础,而是介绍一些 Grunt 的使用技巧。刚好和小伙伴们做了一次内部分享,一起来了解一下吧!

grunt.svg

管理员权限

安装 grunt-cli 一定要使用管理员权限。

Grunt 运行完整命令

Grunt 运行完整命令为 grunt [--gruntfile *.js] [task:target],如果你的 grunt 基本配置文件不是 Gruntfile.js,运行命令行时请加上--gruntfile 参数,后面跟其它 JavaScript 配置文件。默认下直接运行 grunt 会执行 grunt default,如果你想直接运行某个任务(集),请执行 grunt task(s)。如果具体到某个目标,请运行 grunt task:target

使用 grunt-init

可使用 grunt-inityoman 来生成 Gruntfile.js 骨架,grunt-init 要下载相应的模板并安装在相应的路径下,以 Windows 7 系统为例,模板应该放置%USERPROFILE%\.grunt-init\ 中。

使用 load-grunt-tasks

如果加载模块很多,grunt.loadNpmTasks 部分会非常冗长。建议安装 load-grunt-tasks 模块,然后在 Gruntfile.js 文件中,用 require('load-grunt-tasks')(grunt) 替代所有的 grunt.loadNpmTasks 语句。Grunt 便可以自动分析 package.json 文件,自动加载所找到的 Grunt 模块。

使用 imagemin

图片压缩插件 imagemin 的效果不怎么好,建议还是用图形处理软件如 Photoshop 来搞定。

使用 uglify

使用压缩混淆插件 uglify 处理 jQuery 代码后,在 IE8 下跑起来,可设置 screwIE8: false 来解决这一问题。设置 mangle: { except: ['jQuery'] } 是没有用的。

使用 grunt-usemin

如果你的 Web 应用是多页面的,使用 concatuglify CSSmin 相应处理后要在第个页面替换原来的 CSS 和 JavaScript 资源资源路径是很麻烦的。一个好办法就是使用 grunt-usemin 来解决这一问题,该插件整合了 concatuglifycssmin 的功能,而且通过在页面注解的方式自动替换静态资源 url 的配置,可大大减轻多页面需要手动配置的工作量。结合使用 Grunt 动态构建文件对象进行配置,可做到少修改配置,以不变应万变。

针对单页面应用(SPA),grunt-usemin 插件如果要合并压缩混淆模板页面中的静态资源文件,可以设置 useminPrepareroot 选项等于 index.html 所在的目录。

使用 grunt-filerev

如果发布时要让页面缓存失效,最好的办法是使用 grunt-filerev 来修改文件名。Grunt 根据文件内容在文件名前随机加入 md5 字符串。如果文件内容内容变了,md5 字符串会相应改变,反之不会改变 md5 字符串。这样就保证了新版发布后,更改过的页面 url 与上次发布不同,因此用户看到的页面肯定是新的。另外一种常用的方是在静态资源文件后加上一个版本参数,不过这样会强制刷新页面,即使该页面没有被更新过。显然使用 grunt-filerev 插件是更好的解决方案。

资源参考

gitHub 相应链接:https://github.com/51fe/grunt-tips

3

评论 (0)

取消