清理文件和文件夹:grunt-contrib-clean。
module.exports = function(grunt) {
grunt.initConfig({
clean : {
build : ['.tmp', 'build'],
release : ['release']
}
});
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.registerTask('default', ['clean']);
};
使用UglifyJS压缩js文件:grunt-contrib-uglify。
module.exports = function(grunt) {
// 项目配置
grunt.initConfig({
pkg : grunt.file.readJSON('package.json'),
uglify : {
options : {
banner : '/*! <%= pkg.file %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
build : {
src : 'src/<%=pkg.file %>.js',
dest : 'dest/<%= pkg.file %>.min.js'
}
}
});
// 加载提供"uglify"任务的插件
grunt.loadNpmTasks('grunt-contrib-uglify');
// 默认任务
grunt.registerTask('default', ['uglify']);
};
合并文件: grunt-contrib-concat。
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'
}
}
});
grunt.loadNpmTasks('grunt-contrib-concat');
// 默认任务
grunt.registerTask('default', ['concat']);
}
合并并压缩文件:
方式一、先合并再压缩,首先将三个文件合并成一个文件libs.js,然后再将文件libs.js压缩成libs.min.js
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']);
}
方式二:先压缩后合并,其实这里只需要grunt-contrib-uglify一个插件就可以完成代码的压缩及合并。
module.exports = function(grunt) {
// 项目配置
grunt.initConfig({
pkg : grunt.file.readJSON('package.json'),
uglify : {
"target" : {
"files" : {
'dest/libs.min.js' : ['src/zepto.js', 'src/underscore.js', 'src/backbone.js']
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
// 默认任务
grunt.registerTask('default', ['uglify']);
}
grunt-contrib-jshint
jshint用于javascript代码检查(并会给出建议),发布js代码前执行jshint任务,可以避免出现一些低级语法问题。
jshint拥有非常丰富的配置,可以自由控制检验的级别。
module.exports = function(grunt) {
// 构建任务配置
grunt.initConfig({
//读取package.json的内容,形成个json数据
pkg: grunt.file.readJSON('package.json'),
jshint: {
options: {
//大括号包裹
curly: true,
//对于简单类型,使用===和!==,而不是==和!=
eqeqeq: true,
//对于首字母大写的函数(声明的类),强制使用new
newcap: true,
//禁用arguments.caller和arguments.callee
noarg: true,
//对于属性使用aaa.bbb而不是aaa['bbb']
sub: true,
//查找所有未定义变量
undef: true,
//查找类似与if(a = 0)这样的代码
boss: true,
//指定运行环境为node.js
node: true
},
//具体任务配置
files: {
src: ['src/*.js']
}
}
});
// 加载指定插件任务
grunt.loadNpmTasks('grunt-contrib-jshint');
// 默认执行的任务
grunt.registerTask('default', ['jshint']);
};
grunt-contrib-copy:复制文件和文件夹。
grunt-contrib-cssmin:CSS文件压缩。
grunt-contrib-imagemin:图片压缩。
grunt-usemin:Replaces references to non-optimized scripts or stylesheets into a set of HTML files (or any templates/views).
grunt-contrib-htmlmin:Minify HTML