Subversion-Projekte lars-tiefland.webanos.zeldi.de

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

/*jshint node:true*/
module.exports = function( grunt ) {

"use strict";

var banner,
        umdStart,
        umdMiddle,
        umdEnd,
        umdStandardDefine,
        umdAdditionalDefine,
        umdLocalizationDefine;

banner = "/*!\n" +
        " * jQuery Validation Plugin v<%= pkg.version %>\n" +
        " *\n" +
        " * <%= pkg.homepage %>\n" +
        " *\n" +
        " * Copyright (c) <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>\n" +
        " * Released under the <%= _.map(pkg.licenses, 'type').join(', ') %> license\n" +
        " */\n";

// Define UMD wrapper variables

umdStart = "(function( factory ) {\n" +
        "\tif ( typeof define === \"function\" && define.amd ) {\n";

umdMiddle = "\t} else if (typeof module === \"object\" && module.exports) {\n" +
        "\t\tmodule.exports = factory( require( \"jquery\" ) );\n" +
        "\t} else {\n" +
        "\t\tfactory( jQuery );\n" +
        "\t}\n" +
        "}(function( $ ) {\n\n";

umdEnd = "return $;" +
        "\n}));";

umdStandardDefine = "\t\tdefine( [\"jquery\"], factory );\n";
umdAdditionalDefine = "\t\tdefine( [\"jquery\", \"./jquery.validate\"], factory );\n";
umdLocalizationDefine = "\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n";

grunt.initConfig( {
        pkg: grunt.file.readJSON( "package.json" ),
        concat: {

                // Used to copy to dist folder
                dist: {
                        options: {
                                banner: banner +
                                        umdStart +
                                        umdStandardDefine +
                                        umdMiddle,
                                footer: umdEnd
                        },
                        files: {
                                "dist/jquery.validate.js": [ "src/core.js", "src/*.js" ]
                        }
                },
                extra: {
                        options: {
                                banner: banner +
                                        umdStart +
                                        umdAdditionalDefine +
                                        umdMiddle,
                                footer: umdEnd
                        },
                        files: {
                                "dist/additional-methods.js": [ "src/additional/additional.js", "src/additional/*.js" ]
                        }
                }
        },
        uglify: {
                options: {
                        preserveComments: false,
                        banner: "/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - " +
                                "<%= grunt.template.today('m/d/yyyy') %>\n" +
                                " * <%= pkg.homepage %>\n" +
                                " * Copyright (c) <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>;" +
                                " Licensed <%= _.map(pkg.licenses, 'type').join(', ') %> */\n"
                },
                dist: {
                        files: {
                                "dist/additional-methods.min.js": "dist/additional-methods.js",
                                "dist/jquery.validate.min.js": "dist/jquery.validate.js"
                        }
                },
                all: {
                        expand: true,
                        cwd: "dist/localization",
                        src: "**/*.js",
                        dest: "dist/localization",
                        ext: ".min.js"
                }
        },
        compress: {
                dist: {
                        options: {
                                mode: "zip",
                                level: 1,
                                archive: "dist/<%= pkg.name %>-<%= pkg.version %>.zip",
                                pretty: true
                        },
                        src: [
                                "changelog.txt",
                                "demo/**/*.*",
                                "dist/**/*.js",
                                "Gruntfile.js",
                                "lib/**/*.*",
                                "package.json",
                                "README.md",
                                "src/**/*.*",
                                "test/**/*.*"
                        ]
                }
        },
        qunit: {
                files: "test/index.html"
        },
        jshint: {
                options: {
                        jshintrc: true
                },
                core: {
                        src: "src/**/*.js"
                },
                test: {
                        src: [ "test/*.js", "test/additional/*.js" ]
                },
                grunt: {
                        src: "Gruntfile.js"
                }
        },
        watch: {
                options: {
                        atBegin: true
                },
                src: {
                        files: "<%= jshint.core.src %>",
                        tasks: [
                                "concat"
                        ]
                }
        },
        jscs: {
                all: [ "<%= jshint.core.src %>", "<%= jshint.test.src %>", "<%= jshint.grunt.src %>" ]
        },
        copy: {
                dist: {
                        options: {

                                // Append UMD wrapper
                                process: function( content ) {
                                        return umdStart + umdLocalizationDefine + umdMiddle + content + umdEnd;
                                }
                        },
                        src: "src/localization/*",
                        dest: "dist/localization",
                        expand: true,
                        flatten: true,
                        filter: "isFile"
                }
        },
        replace: {
                dist: {
                        src: "dist/**/*.min.js",
                        overwrite: true,
                        replacements: [
                                {
                                        from: "./jquery.validate",
                                        to: "./jquery.validate.min"
                                }
                        ]
                }
        },

        // Generate the sub-resource integrity hashes of the distribution files
        sri: {
                options: {
                        algorithms: [ "sha256", "sha384", "sha512" ],

                        // The target json file
                        dest: "dist/jquery-validation-sri.json",

                        // Stringify the JSON output in a pretty format
                        pretty: true
                },

                all: {
                        src: [
                                "dist/jquery.validate.{min.js,js}",
                                "dist/additional-methods.{min.js,js}",
                                "dist/localization/*.js"
                        ]
                }
        }
} );

grunt.loadNpmTasks( "grunt-contrib-jshint" );
grunt.loadNpmTasks( "grunt-contrib-qunit" );
grunt.loadNpmTasks( "grunt-contrib-uglify" );
grunt.loadNpmTasks( "grunt-contrib-concat" );
grunt.loadNpmTasks( "grunt-contrib-compress" );
grunt.loadNpmTasks( "grunt-contrib-watch" );
grunt.loadNpmTasks( "grunt-jscs" );
grunt.loadNpmTasks( "grunt-contrib-copy" );
grunt.loadNpmTasks( "grunt-text-replace" );
grunt.loadNpmTasks( "grunt-sri" );

grunt.registerTask( "default", [ "concat", "copy", "jscs", "jshint", "qunit" ] );
grunt.registerTask( "release", [ "default", "uglify", "replace", "compress", "sri" ] );
grunt.registerTask( "start", [ "concat", "watch" ] );

};