mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
237 lines
7.8 KiB
JavaScript
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']);
|
|
}; |