bklLiudl
2024-07-23 277bbae216debe7e6c04e8cc6ee6e1ba9763e14b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*global config:true, task:true*/
module.exports = function(grunt) {
 
grunt.initConfig({
    pkg: '<json:package.json>',
    meta: {
        banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
            '<%= grunt.template.today("m/d/yyyy") %>\n' +
            '<%= pkg.homepage ? "* " + pkg.homepage + "\n" : "" %>' +
            '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
            ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */'
    },
    concat: {
        'dist/jquery.validate.js': ['<banner>', '<file_strip_banner:jquery.validate.js>'],
        'dist/additional-methods.js': ['<banner>', '<file_strip_banner:additional-methods.js>']
    },
    min: {
        'dist/jquery.validate.min.js': ['<banner>', 'dist/jquery.validate.js'],
        'dist/additional-methods.min.js': ['<banner>', 'dist/additional-methods.js']
    },
    zip: {
        dist: {
            src: [
                'dist/additional-methods.js',
                'dist/additional-methods.min.js',
                'dist/jquery.validate.js',
                'dist/jquery.validate.min.js',
                'README.md',
                'changelog.txt',
                'grunt.js',
                'package.json',
                'demo/**/*.*',
                'lib/**/*.*',
                'localization/**/*.*',
                'test/**/*.*'
            ],
            dest: 'dist/<%= pkg.name %>-<%= pkg.version %>.zip'
        }
    },
    qunit: {
        files: ['test/index.html']
    },
    lint: {
        files: [
            'jquery.validate.js',
            'additional-methods.js',
            'localization/*.js'
        ],
        test: [
            'test/test.js',
            'test/rules.js',
            'test/messages.js',
            'test/methods.js'
        ]
    },
    jshint: {
        options: {
            curly: true,
            eqeqeq: true,
            immed: true,
            latedef: true,
            newcap: true,
            noarg: true,
            sub: true,
            undef: true,
            eqnull: true,
            browser: true
        },
        globals: {
            jQuery: true,
            $: true,
            console: true,
            /* TODO only allows these for tests (grunt 0.4) */
            QUnit: true,
            module: true,
            test: true,
            start: true,
            stop: true,
            expect: true,
            ok: true,
            equal: true,
            deepEqual: true,
            strictEqual: true
        }
    }
});
 
grunt.registerMultiTask('zip', 'Create a zip file for release', function() {
    var files = grunt.file.expand(this.file.src);
    // grunt.log.writeln(require('util').inspect(files));
    grunt.log.writeln("Creating zip file " + this.file.dest);
 
    var done = this.async();
 
    var zipstream = require('zipstream');
    var fs = require('fs');
 
    var out = fs.createWriteStream(this.file.dest);
    var zip = zipstream.createZip({ level: 1 });
 
    zip.pipe(out);
 
    function addFile() {
        if (!files.length) {
            zip.finalize(function(written) {
                grunt.log.writeln(written + ' total bytes written');
                done();
            });
            return;
        }
        var file = files.shift();
        grunt.log.verbose.writeln('Zipping ' + file);
        zip.addFile(fs.createReadStream(file), { name: file }, addFile);
    }
    addFile();
});
 
grunt.registerTask('default', 'lint qunit');
grunt.registerTask('release', 'default concat min zip');
 
};