一、作用
主要用于JavaScript代码的压缩与混淆。
二、下载安装
1.下载模块
npm install grunt-contrib-uglify --save-dev
2.加载模块
grunt.loadNpmTasks('grunt-contirb-uglify');
3.整体配置(Gruntfile.js)
1 module.exports = function(grunt) {
2
3 //grunt运行配置
4 grunt.initConfig({
5
6 //读取package.json配置
7 pkg: grunt.file.readJSON("package.json"),
8
9 //配置uglify任务
10 uglify: {
11 ...
12 }
13 });
14
15 //加载grunt-contrib-uglify模块
16 grunt.loadNpmTasks('grunt-contrib-uglify');
17
18 //将uglify任务注册到默认指令中
19 grunt.registerTask("default", ['uglify']);
20 };
三、uglify任务配置
1 module.exports = function(grunt) { 2 3 //grunt运行配置 4 grunt.initConfig({ 5 6 //读取package.json配置 7 pkg: grunt.file.readJSON("package.json"), 8 9 //配置uglify任务 10 uglify: { 11 options: { 12 banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */ ' //注释名称 13 }, 14 build_a: { 15 options: { 16 mangle: true, //是否混淆 17 preserveComments: 'all', //不删除注释,还可以为 false(删除全部注释),some(保留@preserve @license @cc_on等注释) 18 footer: ' /*! <%= pkg.name %> 最后修改于: <%= grunt.template.today("yyyy-mm-dd") %> */' //添加footer 19 }, 20 files: { 21 'dist/<%= pkg.name %>.min.js': ['src/index.js', 'src/login.js'] 22 } 23 }, 24 build_b: { 25 options: { 26 report: "min", //输出压缩率,可选的值有 false(不输出信息),gzip 27 beautify: { //是否格式显示 28 80, 29 beautify: false 30 } 31 }, 32 files: { 33 'dist/<%= pkg.name %>.min.js': ['src/index.js'] 34 } 35 }, 36 build_all: { //按原文件结构压缩js文件夹内所有JS文件 37 files: [{ 38 expand: true, 39 cwd: 'src', //js目录下 40 src: '**/*.js', //所有js文件 41 dest: 'dist' //输出到此目录下 42 }] 43 }, 44 release: { //合并压缩a.js和b.js 45 files: { 46 'dist/<%= pkg.name %>.min.js': ['src/index.js', 'src/login.js'] 47 } 48 } 49 } 50 51 }); 52 53 //加载grunt-contrib-uglify模块 54 grunt.loadNpmTasks('grunt-contrib-uglify'); 55 56 //将uglify任务注册到默认指令中 57 grunt.registerTask('builda', ['uglify:build_a']); 58 grunt.registerTask('buildb', ['uglify:build_b']); 59 grunt.registerTask('buildall', ['uglify:build_all']); 60 grunt.registerTask('buildrelease', ['uglify:release']); 61 62 };