作为程序员一定要保持良好的睡眠,才能好编程

grunt 插件配置文件

发布时间:2019-01-25

grunt 配置文件

module.exports = function (grunt) {
        
        pkg: grunt.file.readJSON('package.json'),
        
    var sourceDir = "dev";// 源码目录
    var buildDir = ".build";// 构建中间目录
    var finalDir = "release";// 最终打包目录
    var static_url = "";

    var transport = require('grunt-cmd-transport');
    var style = transport.style.init(grunt);
    var script = transport.script.init(grunt);

    grunt.initConfig({
        watch: {
            css: {
                files: ['' + sourceDir + '/**/*.css'],
                tasks: ['css_combo', 'css_url_replace', 'clean', 'copy:build'],
                options: {livereload: true}
            },
            js: {
                files: ['' + sourceDir + '/**/*.js'],
                tasks: ['transport', 'concat', 'uglify', 'clean', 'copy:build', 'copy:base'],
                options: {livereload: true}
            },
            images: {
                files: ['' + sourceDir + '/images/**/*'],
                tasks: ['copy:image'],
                options: {livereload: true}
            }
        },
        // 检测js依赖
        transport: {
            options: {
                paths: [sourceDir],
                parsers: {
                    '.js': [script.jsParser],
                    '.css': [style.css2jsParser]
                },
                alias: {
                    //lib-flexible
                    'flexible': static_url + '/lib/flexible/0.3.2/flexible',
                    // jquery
                    'jquery': static_url + '/lib/jquery/1.8.2/jquery',
                    // iscroll
                    'iscroll': static_url + '/lib/iscroll/4.2.5/iscroll',
                    // iscroll5
                    'iscroll5': static_url + '/lib/iscroll/5.0/iscroll-probe.js',
                    // jquery的base64库
                    'base64': static_url + '/lib/base64/0.0.3/base64',
                    // validForm验证库
                    'validForm': static_url + '/lib/validForm/5.3.2/validForm',
                    // artDialog弹出库
                    'dialog': static_url + '/lib/artDialog/4.1.7/artDialog',
                    // artTemplate的js模版引擎库
                    'template': static_url + '/lib/artTemplate/0.0.1/artTemplate',
                    // swiper
                    'swiper': static_url + '/lib/swiper/3.1.0/swiper.min',
                    //qrcode
                    'qrcode': static_url + "/lib/qrcode/0.0.1/qrcode.min.js",
                    //sweetAlert
                    'sweetAlert': static_url + "/lib/sweetAlert/0.0.1/sweetalert.min.js",
                    //echarts
                    'echarts': static_url + "/lib/echarts/3.7.1/echarts.min.js",
                    //jsencrypt
                    'jsencrypt': static_url + "/lib/echarts/2.3.1/jsencrypt.js",
                    //laydate日历插件
                    'laydate': static_url + "/lib/laydate/laydate.js",

                    'select2': static_url + "/lib/select/select2.js",

                    //laydate粘贴板插件
                    'clipboard': static_url + "/lib/clipboard/1.0.0/clipboard.js"
                }
            },
            build: {
                files: [
                    {
                        cwd: sourceDir,
                        src: ['module/**/*.js'],
                        dest: buildDir
                    }
                ]
            }
        },
        // 合并js
        concat: {
            options: {
                paths: [buildDir],
                include: 'all'
            },
            build: {
                files: [
                    {
                        expand: true,
                        cwd: buildDir,
                        src: ['**/**/*.js', '!lib/*', '!**/**/*-debug.js'],
                        dest: finalDir
                    }
                ]
            }
        },
        // 压缩js
        uglify: {
            //banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'//添加banner
            options: {
                mangle: true, //不混淆变量名
                //preserveComments: 'all', //不删除注释,还可以为 false(删除全部注释),some(保留@preserve @license @cc_on等注释)
                footer: '\n/*! 最后修改于: <%= grunt.template.today("yyyy-mm-dd") %> */', //添加footer
                compress: {
                    drop_console: true
                }
            },
            build: {
                files: [
                    {
                        expand: true,
                        cwd: sourceDir,
                        src: ['**/**/*.js', 'base/js/*.js', '!**/**/*-debug.js', '!**/lib/**/*.js'],
                        dest: finalDir
                    }
                ]
            }
        },
        //压缩css
        css_combo: {
            options: {
                debug: false,
                compress: true
            },
            build: {
                files: [{
                    expand: true,
                    cwd: sourceDir,
                    src: ['**/*.css', 'base/css/*.css', '!**/tmpcommon/*.css', '!**/tmpcommon/*.js'],
                    dest: finalDir
                }]
            }
        },
        css_url_replace: {
            options: {
                staticRoot: sourceDir
            },
            replace: {
                files: [{
                    expand: true,
                    cwd: finalDir,
                    src: ['**/*.css', '!**/tmpcommon/*.css', '!**/tmpcommon/*.js'],
                    dest: finalDir
                }]
            }
        },
        // 删除临时目录
        clean: {
            build: [buildDir],
            removeCommon: [finalDir + '/module/tmpcommon', finalDir + '/css/tmpcommon']
        },
        //复制文件
        copy: {
            build: {
                expand: true,
                flatten: false,
                cwd: sourceDir,
                src: ['!module/tmpcommon/*.js', 'lib/**/*.js', 'lib/**/*.woff'],
                dest: finalDir,
                filter: 'isFile'
            },
            image: {
                expand: true,
                flatten: false,
                cwd: sourceDir,
                src: ['images/**/*'],
                dest: finalDir,
                filter: 'isFile'
            },
            lib: {
                expand: true,
                flatten: false,
                cwd: sourceDir,
                src: ['lib/**/*'],
                dest: finalDir,
                filter: 'isFile'
            },
            configJs: {
                expand: true,
                flatten: false,
                cwd: sourceDir,
                src: ['public/config.js'],
                dest: finalDir,
                filter: 'isFile'
            }
        }
    });

    grunt.loadNpmTasks('grunt-css-combo');
    grunt.loadNpmTasks('grunt-css-url-replace');
    grunt.loadNpmTasks('grunt-cmd-transport');
    grunt.loadNpmTasks('grunt-cmd-concat');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-clean');
    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.loadNpmTasks('grunt-contrib-livereload');
    grunt.loadNpmTasks('grunt-contrib-watch');

    // 监听
    grunt.registerTask('dev', ['watch']);

    // 处理全部
    grunt.registerTask('init', ['transport', 'concat', 'uglify', 'css_combo', 'css_url_replace', 'copy', 'clean']);

};


帮助文档:

https://www.cnblogs.com/well-nice/p/4801408.html


https://www.cnblogs.com/mangoniki/p/5383240.html