首页 > 代码库 > 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 示例:
这里主要使用的是 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‘//输出到此目录下 }] }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。