分享

Gruntfile.js

 菁清siso 2016-09-09
//包装函数
module.exports = function(grunt) {
require("matchdep").filterDev("grunt-*").forEach(grunt.loadNpmTasks);
  // 任务配置,所有插件的配置信息
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    //压缩JS
    // uglify: {
    //   options: {
    //     banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
    //   },
    //   // build: {
    //   //   src: 'src/*.js',
    //   //   dest: 'build/<%= pkg.name %>-<%= pkg.version %>.min.js'
    //   // }
    //   builda: {//任务一:压缩a.js,不混淆变量名,保留注释,添加banner和footer
    //             options: {
    //                 mangle: false, //不混淆变量名
    //                 preserveComments: 'all', //不删除注释,还可以为 false(删除全部注释),some(保留@preserve @license @cc_on等注释)
    //                 footer:'\n/*! <%= pkg.name %> 最后修改于: <%= grunt.template.today("yyyy-mm-dd") %> */'//添加footer
    //             },
    //             files: {
    //                 'build/a.min.js': ['src/a.js']
    //             }
    //         },
    //   buildb:{//任务二:压缩b.js,输出压缩信息
    //             options: {
    //                 report: "min"//输出压缩率,可选的值有 false(不输出信息),gzip
    //             },
    //             files: {
    //                 'build/b.min.js': ['src/b.js']
    //             }
    //         }, 
    //   buildall: {//任务三:按原文件结构压缩js文件夹内所有JS文件
    //             files: [{
    //                 expand:true,
    //                 cwd:'src',//js目录下
    //                 src:'*.js',//所有js文件
    //                 dest: 'build/js'//输出到此目录下
    //             }]
    //         },  
    //         release: {//任务四:合并压缩a.js和b.js
    //             files: {
    //                 'build/index.min.js': ['src/a.js', 'src/b.js']
    //             }
    //         }                    
    // },
    // jshint: {
    //     build: ['Gruntfile.js','src/*.js'],
    //     options: {
    //         jshintrc:'.jshintrc'
    //     }
    // }
    //压缩js
    uglify: {
      //文件头部输出信息
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
      },
      my_target: {
        files: [
          {
            expand: true,
            //相对路径
            cwd: 'src/',
            src: '*.js',
            dest: 'dest/js/',
            rename: function (dest, src) {  
                  var folder = src.substring(0, src.lastIndexOf('/'));  
                  var filename = src.substring(src.lastIndexOf('/'), src.length);  
                  //  var filename=src;  
                  filename = filename.substring(0, filename.lastIndexOf('.'));  
                  var fileresult=dest + folder + filename + '.min.js';  
                  grunt.log.writeln("现处理文件:"+src+"  处理后文件:"+fileresult);  
                  return fileresult;  
                  //return  filename + '.min.js';  
                } 
          }
        ]
      }
    },
    //压缩CSS
    cssmin: {
      //文件头部输出信息
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n',
        //美化代码
        beautify: {
          //中文ascii化,非常有用!防止中文乱码的神配置
          ascii_only: true
        }
      },
      my_target: {
        files: [
        {
          expand: true,
            //相对路径
            cwd: 'css/',
            src: '*.css',
            dest: 'dest/css/',
            rename: function (dest, src) {  
              var folder = src.substring(0, src.lastIndexOf('/'));  
              var filename = src.substring(src.lastIndexOf('/'), src.length);  
                //  var filename=src;  
                filename = filename.substring(0, filename.lastIndexOf('.'));  
                var fileresult=dest + folder + filename + '.min.css';  
                grunt.log.writeln("现处理文件:"+src+"  处理后文件:"+fileresult);  
                return fileresult;  
                //return  filename + '.min.js';
              }
            }
            ]
          }
        },
    // 文件合并
    concat: {
      options: {
        separator: ';',
        stripBanners: true
      },
      js: {
        src: [
          "src/js/*.js"
        ],
        dest: "dist/html/js/app.js"
      },
      css:{
        src: [
          "src/css/*.css"
        ],
        dest: "dist/html/css/main.css"
      }
    },
   // 清除目录
    csslint: {
            /* 检查 CSS 语法 */
            src: ['css/**/*.css']
    },
    jshint: {
          /* 检查 js 语法 */
          all: ['src/*.js']
    }
    ,
    clean: {
      all: ['dist/html/**', 'dist/*.*'],
      image: 'dist/html/images',
      css: 'dist/html/css',
      html: 'dist/html/**/*'
    },
    //复制
    copy: {
      src: {
        files: [
        {expand: true, cwd: 'src', src: ['*.html'], dest: 'dist/html'}
        ]
      },
      image: {
        files: [
        {expand: true, cwd: 'src', src: ['images/*.{png,jpg,jpeg,gif}'], dest: 'dist/html'}
        ]
      }
    },

    //压缩图片
    imagemin: {
      prod: {
        options: {
          optimizationLevel: 7,
          pngquant: true
        },
        files: [
          {expand: true, cwd: 'dist/html', src: ['images/*.{png,jpg,jpeg,gif,webp,svg}'], dest: 'dist/html'}
        ]
      }
    },

    // 处理html中css、js 引入合并问题
    usemin: {
      html: 'dist/html/*.html'
    },
    //压缩HTML
    htmlmin: {
      options: {
        removeComments: true,
        removeCommentsFromCDATA: true,
        collapseWhitespace: true,
        collapseBooleanAttributes: true,
        removeAttributeQuotes: true,
        removeRedundantAttributes: true,
        useShortDoctype: true,
        removeEmptyAttributes: true,
        removeOptionalTags: true
      },
      html: {
        files: [
          {expand: true, cwd: 'dist/html', src: ['*.html'], dest: 'dist/html'}
        ]
      }
    },
     watch: {
      uglify: {
        files: ['src/*.js'],
        options: {livereload:false}
      }
      /* 监控文件变化并执行相应任务 */
      // img: {
      //   files: ['src/img/**/*.{png,jpg,jpeg}'],
      //   options: {
      //     livereload: true
      //   }
      // },
      // css: {
      //   options: {
      //     event: ['changed', 'added'],
      //     livereload: true
      //   },
      //   files: ['src/css/**/*.css']
      // },
      // js: {
      //   options: {
      //     livereload: true
      //   },
      //   files: ['src/*.js']
      // },
      // html: {
      //   options: {
      //     livereload: true
      //   },
      //   files: ['*.html']
      // }
    } 

  });

     // grunt.loadNpmTasks('grunt-contrib-jshint');
     // grunt.loadNpmTasks('grunt-contrib-uglify');
     // grunt.loadNpmTasks('grunt-contrib-watch');

    grunt.registerTask('cssmin', ['cssmin']);//, 'qunit', 'concat' 'uglify',
    grunt.registerTask('uglify', ['uglify']);
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多