librenms/lib/jquery-bootgrid/Gruntfile.js

237 lines
7.8 KiB
JavaScript

/*jshint node:true*/
module.exports = function (grunt)
{
"use strict";
/* Hint: Using grunt-strip-code to remove comments from the release file */
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
banner: '/*! <%= "\\r\\n * " + pkg.title %> v<%= pkg.version %> - <%= grunt.template.today("mm/dd/yyyy") + "\\r\\n" %>' +
' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %> <%= (pkg.homepage ? "(" + pkg.homepage + ")" : "") + "\\r\\n" %>' +
' * Licensed under <%= pkg.licenses[0].type + " " + pkg.licenses[0].url + "\\r\\n */\\r\\n" %>',
folders: {
dist: "dist",
docs: "docs",
src: "src"
},
clean: {
api: ["<%= folders.docs %>"],
build: ["<%= folders.dist %>"]
},
yuidoc: {
compile: {
name: '<%= pkg.name %>',
description: '<%= pkg.description %>',
version: '<%= pkg.version %>',
url: '<%= pkg.homepage %>',
options: {
paths: '<%= folders.dist %>',
outdir: '<%= folders.docs %>/'
}
}
},
less: {
default: {
files: {
"<%= folders.dist %>/<%= pkg.namespace %>.css": "<%= folders.src %>/<%= pkg.namespace %>.less"
}
}
},
concat: {
scripts: {
options: {
separator: '\r\n\r\n',
banner: '<%= banner %>;(function ($, window, undefined)\r\n{\r\n /*jshint validthis: true */\r\n "use strict";\r\n\r\n',
footer: '\r\n})(jQuery, window);',
process: function(src, filepath)
{
var result = src.trim().replace(/(.+?\r\n)/gm, ' $1'),
end = [0, ""],
lastChar = result[result.length - 1];
if (lastChar === ";")
{
end = (result[result.length - 2] === ")") ?
(result[result.length - 2] === "}") ?
[3, " });"] : [2, ");"] : [2, " };"];
}
else if (lastChar === "}")
{
end = [1, " }"];
}
return result.substr(0, result.length - end[0]) + end[1];
}
},
files: {
'<%= folders.dist %>/<%= pkg.namespace %>.js': [
'<%= folders.src %>/internal.js',
'<%= folders.src %>/public.js',
'<%= folders.src %>/extensions.js',
'<%= folders.src %>/plugin.js'
]
}
},
styles: {
options: {
separator: '\r\n\r\n',
banner: '<%= banner %>'
},
files: {
'<%= folders.dist %>/<%= pkg.namespace %>.css': [
'<%= folders.dist %>/<%= pkg.namespace %>.css'
]
}
}
},
csslint: {
default: {
options: {
'adjoining-classes': false,
'important': false,
'outline-none': false,
'overqualified-elements': false
},
src: '<%= folders.dist %>/<%= pkg.namespace %>.css'
}
},
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
}
},
files: ['<%= folders.dist %>/<%= pkg.namespace %>.js'],
test: {
options: {
globals: {
jQuery: true,
$: true,
QUnit: true,
module: true,
test: true,
start: true,
stop: true,
expect: true,
ok: true,
equal: true,
deepEqual: true,
strictEqual: true
}
},
files: {
src: [
'test/tests-internal.js',
'test/tests-rendering.js',
'test/tests-extensions.js'
]
}
},
grunt: {
files: {
src: [
'Gruntfile.js'
]
}
}
},
cssmin: {
default: {
options: {
report: 'gzip'
},
files: {
'<%= folders.dist %>/<%= pkg.namespace %>.min.css': ['<%= folders.dist %>/<%= pkg.namespace %>.css']
}
}
},
uglify: {
default: {
options: {
preserveComments: 'some',
report: 'gzip'
},
files: {
'<%= folders.dist %>/<%= pkg.namespace %>.min.js': ['<%= folders.dist %>/<%= pkg.namespace %>.js']
}
}
},
nugetpack: {
default: {
src: '<%= pkg.namespace %>.nuspec',
dest: '<%= folders.dist %>',
options: {
version: '<%= pkg.version %>'
}
}
},
compress: {
default: {
options: {
archive: '<%= folders.dist %>/<%= pkg.namespace %>-<%= pkg.version %>.zip'
},
files: [
{
flatten: true,
expand: true,
src: ['<%= folders.dist %>/*.js', '<%= folders.dist %>/*.css'], dest: '/'
}
]
}
},
qunit: {
files: ['test/index.html']
},
exec: {
publish: {
cmd: 'npm publish .'
}
},
nugetpush: {
default: {
src: '<%= folders.dist %>/*.nupkg'
}
}
});
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-csslint');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-qunit');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-yuidoc');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-compress');
grunt.loadNpmTasks('grunt-exec');
grunt.loadNpmTasks('grunt-nuget');
grunt.loadNpmTasks('grunt-regex-replace');
grunt.registerTask('default', ['build']);
grunt.registerTask('api', ['clean:api', 'yuidoc']);
grunt.registerTask('build', ['clean:build', 'less', 'concat', 'csslint', 'jshint', 'qunit']);
grunt.registerTask('release', ['build', 'api', 'cssmin', 'uglify', 'compress', 'nugetpack']);
grunt.registerTask('publish', ['nugetpush', 'exec:publish']);
};