Grunt工具介绍
安装
运行项目我们需要grunt-cli和yeoman和yo的一个webapp生成器,如果你的系统中已经安装npm则只需要:
1 2 3
| npm install -g grunt-cli npm install -g yo /* npm install -g generator-webapp */
|
然后开始你的grunt之旅吧~
Grunt配置
Grunt的配置项在根目录的gruntfile.js下。
以sass为例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| sass: { options: { loadPath: 'bower_components' }, dist: { files: [{ expand: true, cwd: '<%= config.app %>/styles', src: ['*.{scss,sass}'], dest: 'dist/styles', ext: '.css' }] }, server: { files: [{ expand: true, cwd: '<%= config.app %>/styles', src: ['*.{scss,sass}'], dest: '.tmp/styles', ext: '.css' }] } }
|
里面配置了import源文件地址loadPath,文件源文件地址cwd和目的地址dest等等。
可以通过运行一下代码进行编译。
Grunt压缩合并小案例
压缩合并一些js应该算是最被需要的功能之一了,用Grunt来实现也尤为简单
首先需要安装grunt-contrib-concat和grunt-contrib-uglify插件。
然后按以下代码配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| module.exports = function (grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), concat: { options: { separator: ';' }, dist: { src: ['src/zepto.js', 'src/underscore.js', 'src/backbone.js'], dest: 'dest/libs.js' } }, uglify: { build: { src: 'dest/libs.js', dest: 'dest/libs.min.js' } } }); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.registerTask('default', ['concat', 'uglify']); }
|
Zepto/underscore/backbone就打包成了观众们喜闻乐见的libs.js和压缩版libs.min.js啦。
当然咯,Grunt还有很多插件可以实现更多更强大的功能(比如单元测试),这些就在实践中出真知吧。