生成环境中grunt的压缩使用

来源:互联网 发布:to the moon 音乐 知乎 编辑:程序博客网 时间:2024/06/05 11:00

1.package.json

{  "name": "fs-service-mweb",  "common":"src/main/webapp/static/themes/common",  "mweb":"src/main/webapp/static/themes/mweb",  "wxres":"src/main/webapp/static/themes/wxres",  "version": "1.0.0",  "description": "fs-service-mweb",  "main": "index.js",  "scripts": {    "test": "echo \"Error: no test specified\" && exit 1"  },  "dependencies": {    "grunt": "^1.0.1"  },  "devDependencies": {    "grunt": "*",    "grunt-contrib-livereload": "*",    "grunt-htmlhint":"*",    "grunt-contrib-jshint": "*",    "grunt-contrib-csslint":"*",    "grunt-contrib-concat":"*",    "grunt-contrib-htmlmin":"*",    "grunt-contrib-imagemin":"*",    "grunt-contrib-cssmin":"*",    "grunt-contrib-uglify": "*",    "grunt-contrib-watch":"*",    "matchdep":"*"  },  "keywords": [    "kxll",    "mweb"  ],  "author": "cheonghu",  "license": "ISC"}

2.gruntfile.js

module.exports = function (grunt) {    'use strict';    grunt.initConfig({        pkg:grunt.file.readJSON('package.json'),        htmlhint: {            htmls: {                options: {                    'tag-pair': true                },                src: ['<%=pkg.mweb%>/templates/dev/**/*.html']            }        },        csslint: {            /* 检查 CSS 语法 */            src: ['<%=pkg.mweb%>/css/dev/**/*.css']        },        jshint: {            /* 检查 js 语法 */            all: ['Gruntfile.js','<%=pkg.common%>/plugin/**/*.js',                 '<%=pkg.common%>/js/**/*.js',                '<%=pkg.mweb%>/js/dev/**/*.js']        },        imagemin: {            /* 压缩优化图片大小 */            dist: {                options: {                    optimizationLevel: 3                },                files: [                    {                        expand: true,                        cwd: '<%=pkg.mweb%>/images/',                        src: ['**/*.{png,jpg,jpeg}'], // 优化 img 目录下所有 png/jpg/jpeg 图片                        dest: '<%=pkg.mweb%>/images/' // 优化后的图片保存位置,默认覆盖                    },                    {                        expand: true,                        cwd: '<%=pkg.wxres%>/',                        src: ['**/*.{png,jpg,jpeg}'], // 优化 img 目录下所有 png/jpg/jpeg 图片                        dest: '<%=pkg.wxres%>/' // 优化后的图片保存位置,默认覆盖                    },                ]            }        },        concat: {            /* 合并 CSS 文件 */            main_css: {                src: [                    '<%=pkg.mweb%>/css/dev/reset.css',                    '<%=pkg.mweb%>/css/dev/stylesd.css',                ],                /* 根据目录下文件情况配置 */                dest: '<%=pkg.mweb%>/css/dev/main.css'            },            /* 合并 js 文件 */            common_js:{//插件需要指定合成顺序                src: ['<%=pkg.common%>/plugin/angular/angular.min.js',                    '<%=pkg.common%>/plugin/angular/angular-route.min.js',                    '<%=pkg.common%>/plugin/angular/angular-touch.min.js',                    '<%=pkg.common%>/plugin/angular/sanitize.min.js',                    '<%=pkg.common%>/js/dev/boot.js',                    '<%=pkg.common%>/js/dev/wx_init.js',                    '<%=pkg.common%>/js/dev/locache.js',                    '<%=pkg.common%>/js/dev/base64.js',                ],                /* 根据目录下文件情况配置 */                dest: '<%=pkg.common%>/js/dev/common.js'            },        },        htmlmin: {       //html 压缩                              // Task            dist: {                                      // Target                options: {                                 // Target options                    removeComments: true,                    collapseWhitespace: true,                    processScripts:['text/ng-template'],                    ignoreCustomComments:[ /^!/ ]                },                files:  [{                    expand: true,                    cwd: '<%=pkg.mweb%>/templates/dev/',                    src: '**/*.html',                    dest: '<%=pkg.mweb%>/templates/min/'                }]            },        },        cssmin: {            /*压缩 CSS 文件为 .css */            options: {                keepSpecialComments: 0 /* 移除 CSS 文件中的所有注释 */            },            minify: {                files: [                    {                    expand: true,                    cwd:'<%=pkg.mweb%>/css/dev/',                    src: ['**/*.css'],                    dest: '<%=pkg.mweb%>/css/min/',                    ext: '.css'                },                ]            }        },        uglify: {            minjs: {                files: [                    {                        expand: true,     // Enable dynamic expansion.                        cwd: '<%=pkg.common%>/js/dev/',      // Src matches are relative to this path.                        src: ['common.js'], // Actual pattern(s) to match.                        dest: '<%=pkg.common%>/js/min/',   // Destination path prefix.                        ext: '.js',   // Dest filepaths will have this extension.                    },                    {                        expand: true,     // Enable dynamic expansion.                        cwd: '<%=pkg.mweb%>/js/dev/',      // Src matches are relative to this path.                        src: ['**/*.js'], // Actual pattern(s) to match.                        dest: '<%=pkg.mweb%>/js/min/',   // Destination path prefix.                        ext: '.js',   // Dest filepaths will have this extension.                    },                ],            },        },        watch: {            /* 监控文件变化并执行相应任务 */            img: {                files: ['<%=pkg.mweb%>/images/**/*.{png,jpg,jpeg}'],                tasks:['imageTask'],                options: {                    livereload: true                }            },            css: {                options: {                    event: ['changed', 'added'],                    livereload: true                },                tasks:['cssTask'],                files: [                    '<%=pkg.mweb%>/css/dev/**/*.css',                ]            },            js: {                options: {                    livereload: true                },                tasks:['jsTask'],                files: ['Gruntfile.js','<%=pkg.mweb%>/js/dev/**/*.js',                '<%=pkg.common%>/js/dev/**/*.js']            },            html: {                options: {                    livereload: true                },                tasks:['htmlTask'],                files: ['<%=pkg.mweb%>/template/**/*.html']            }        }    });    grunt.loadNpmTasks('grunt-contrib-livereload');    grunt.loadNpmTasks('grunt-htmlhint');    grunt.loadNpmTasks('grunt-contrib-csslint');    grunt.loadNpmTasks('grunt-contrib-jshint');    grunt.loadNpmTasks('grunt-contrib-concat');    grunt.loadNpmTasks('grunt-contrib-htmlmin');    grunt.loadNpmTasks('grunt-contrib-cssmin');    grunt.loadNpmTasks('grunt-contrib-imagemin');    grunt.loadNpmTasks('grunt-contrib-uglify');    grunt.loadNpmTasks('grunt-contrib-watch');    // 定义默认任务    grunt.registerTask('default', ['imageTask','htmlTask','cssTask','jsTask']);    //注册监听任务    grunt.registerTask('watchTask', ['watch']);    grunt.registerTask('imageTask', ['imagemin']);    grunt.registerTask('htmlTask',['htmlhint','htmlmin']);    grunt.registerTask('jsTask', ['jshint','concat:common_js','uglify']);    grunt.registerTask('cssTask', ['csslint','concat:main_css','cssmin']);};
0 0
原创粉丝点击