首页 > 代码库 > grunt 相关知识

grunt 相关知识

module.exports = function(grunt){    // 项目配置    grunt.initConfig({        pkg: grunt.file.readJSON(‘package.json‘),        uglify: {            options: {                banner: ‘/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n‘//添加banner            },            //任务一:压缩a.js,不混淆变量名,保留注释,添加banner和footer            builda: {                options: {                    mangle: false, //不混淆变量名                    preserveComments: ‘all‘, //不删除注释,还可以为 false(删除全部注释),some(保留@preserve @license @cc_on等注释)                    footer:‘\n/*! <%= pkg.name %> 最后修改于: <%= grunt.template.today("yyyy-mm-dd") %> */‘//添加footer                },                files: {                    ‘output/js/a.min.js‘: [‘js/a.js‘]                }            },            //任务二:压缩b.js,输出压缩信息            buildb:{                options: {                    report: "min"//输出压缩率,可选的值有 false(不输出信息),gzip                },                files: {                    ‘output/js/b.min.js‘: [‘js/main/b.js‘]                }            },            //任务三:按原文件结构压缩js文件夹内所有JS文件            buildall: {                files: [{                    expand:true,                    cwd:‘js‘,//js目录下                    src:‘**/*.js‘,//所有js文件                    dest: ‘output/js‘//输出到此目录下                }]            },            //任务四:合并压缩a.js和b.js            release: {                files: {                    ‘output/js/index.min.js‘: [‘js/a.js‘, ‘js/main/b.js‘]                }            }        }    });    // 加载提供"uglify"任务的插件    grunt.loadNpmTasks(‘grunt-contrib-uglify‘);    // 默认任务    grunt.registerTask(‘default‘, [‘uglify:release‘]);    grunt.registerTask(‘mina‘, [‘uglify:builda‘]);    grunt.registerTask(‘minb‘, [‘uglify:buildb‘]);    grunt.registerTask(‘minall‘, [‘uglify:buildall‘]);}
Gruntfile.js

Gruntfile.js 示例:

这里主要使用的是  grunt-contrib-uglify  使用了文件压缩和文件合并;

pkg: grunt.file.readJSON(‘package.json‘),

读取packages.json 文件里面的信息.

配置任务,使用uglify在里面配置任务 如上文件的 builda,buildb,buildall;

对于每个任务可配置的: 详细阅读 github uglify  doc 

  demotask:{                options: {
            report: "min",//输出压缩率,可选的值有 false(不输出信息),gzip mangle:
false, //是否混淆变量名 默认false 添加 except: [‘jQuery‘, ‘Backbone‘] 例外 ;不要混淆替换jQuery 和Backbone //对压缩方式控制 去掉 console.* 方法 compress: { drop_console: true }, preserveComments: ‘all‘, //不删除注释,还可以为 false(删除全部注释),some(保留@preserve @license @cc_on等注释) footer:‘\n/*! <%= pkg.name %> 最后修改于: <%= grunt.template.today("yyyy-mm-dd") %> */‘//添加footer }, files: [{ expand:true, cwd:‘js‘,//js目录下 src:‘**/*.js‘,//所有js文件 dest: ‘output/js‘//输出到此目录下 }] }