335 lines
8.6 KiB
JavaScript
335 lines
8.6 KiB
JavaScript
'use strict';
|
|
|
|
module.exports = function (grunt) {
|
|
|
|
grunt.initConfig({
|
|
pkg: grunt.file.readJSON('package.json'),
|
|
clean: {
|
|
compiled: ['compiled'],
|
|
releases: [
|
|
'releases/*.v<%= pkg.version %>.zip',
|
|
'releases/latest.zip'
|
|
],
|
|
jsdoc: ['docs/jsdocs']
|
|
},
|
|
concat: {
|
|
options: {
|
|
stripBanners: true,
|
|
banner: '/*\n' +
|
|
'* <%= pkg.title %> - <%= pkg.description %>\n' +
|
|
'* @version <%= pkg.version %>\n' +
|
|
'* @link <%= pkg.homepage %>\n' +
|
|
'* @copyright Steven Usher & Brad Vincent 2015\n' +
|
|
'* @license Released under the GPLv3 license.\n' +
|
|
'*/\n'
|
|
},
|
|
core_js: {
|
|
src: [
|
|
"src/js/FooTable.js",
|
|
"src/js/utils/core/*.js",
|
|
"src/js/utils/*.js",
|
|
"src/js/classes/*.js",
|
|
"src/js/classes/columns/*.js",
|
|
"src/js/components/breakpoints/**/*.js",
|
|
"src/js/components/columns/**/*.js",
|
|
"src/js/components/rows/**/*.js"
|
|
],
|
|
dest: "compiled/footable.core.js"
|
|
},
|
|
core_standalone_css: {
|
|
src: [
|
|
"src/css/FooTable.NoBootstrap.css",
|
|
"src/css/FooTable.css",
|
|
"src/css/FooTable.FontAwesome.css"
|
|
],
|
|
dest: "compiled/footable.core.standalone.css"
|
|
},
|
|
core_bootstrap_css: {
|
|
src: [
|
|
"src/css/FooTable.css",
|
|
"src/css/FooTable.Glyphicons.css"
|
|
],
|
|
dest: "compiled/footable.core.bootstrap.css"
|
|
},
|
|
filtering_js: {
|
|
src: [
|
|
"src/js/components/filtering/**/*.js"
|
|
],
|
|
dest: "compiled/footable.filtering.js"
|
|
},
|
|
filtering_css: {
|
|
src: [
|
|
"src/css/components/FooTable.Filtering.css"
|
|
],
|
|
dest: "compiled/footable.filtering.css"
|
|
},
|
|
sorting_js: {
|
|
src: [
|
|
"src/js/components/sorting/**/*.js"
|
|
],
|
|
dest: "compiled/footable.sorting.js"
|
|
},
|
|
sorting_css: {
|
|
src: [
|
|
"src/css/components/FooTable.Sorting.css"
|
|
],
|
|
dest: "compiled/footable.sorting.css"
|
|
},
|
|
paging_js: {
|
|
src: [
|
|
"src/js/components/paging/**/*.js"
|
|
],
|
|
dest: "compiled/footable.paging.js"
|
|
},
|
|
paging_css: {
|
|
src: [
|
|
"src/css/components/FooTable.Paging.css"
|
|
],
|
|
dest: "compiled/footable.paging.css"
|
|
},
|
|
editing_js: {
|
|
src: [
|
|
"src/js/components/editing/**/*.js"
|
|
],
|
|
dest: "compiled/footable.editing.js"
|
|
},
|
|
editing_css: {
|
|
src: [
|
|
"src/css/components/FooTable.Editing.css"
|
|
],
|
|
dest: "compiled/footable.editing.css"
|
|
},
|
|
state_js: {
|
|
src: [
|
|
"src/js/components/state/**/*.js"
|
|
],
|
|
dest: "compiled/footable.state.js"
|
|
},
|
|
export_js: {
|
|
src: [
|
|
"src/js/components/export/**/*.js"
|
|
],
|
|
dest: "compiled/footable.export.js"
|
|
},
|
|
all_js: {
|
|
src: [
|
|
"compiled/footable.core.js",
|
|
"compiled/footable.filtering.js",
|
|
"compiled/footable.sorting.js",
|
|
"compiled/footable.paging.js",
|
|
"compiled/footable.editing.js",
|
|
"compiled/footable.state.js",
|
|
"compiled/footable.export.js"
|
|
],
|
|
dest: "compiled/footable.js"
|
|
},
|
|
standalone_css: {
|
|
src: [
|
|
"compiled/footable.core.standalone.css",
|
|
"compiled/footable.filtering.css",
|
|
"compiled/footable.sorting.css",
|
|
"compiled/footable.paging.css",
|
|
"compiled/footable.editing.css"
|
|
],
|
|
dest: "compiled/footable.standalone.css"
|
|
},
|
|
bootstrap_css: {
|
|
src: [
|
|
"compiled/footable.core.bootstrap.css",
|
|
"compiled/footable.filtering.css",
|
|
"compiled/footable.sorting.css",
|
|
"compiled/footable.paging.css",
|
|
"compiled/footable.editing.css"
|
|
],
|
|
dest: "compiled/footable.bootstrap.css"
|
|
}
|
|
},
|
|
uglify: {
|
|
prod: {
|
|
options: {
|
|
preserveComments: false,
|
|
banner: '/*\n' +
|
|
'* <%= pkg.title %> - <%= pkg.description %>\n' +
|
|
'* @version <%= pkg.version %>\n' +
|
|
'* @link <%= pkg.homepage %>\n' +
|
|
'* @copyright Steven Usher & Brad Vincent 2015\n' +
|
|
'* @license Released under the GPLv3 license.\n' +
|
|
'*/\n'
|
|
},
|
|
files: {
|
|
'compiled/footable.min.js': [ "compiled/footable.js" ],
|
|
'compiled/footable.core.min.js': [ "compiled/footable.core.js" ],
|
|
'compiled/footable.filtering.min.js': [ "compiled/footable.filtering.js" ],
|
|
'compiled/footable.sorting.min.js': [ "compiled/footable.sorting.js" ],
|
|
'compiled/footable.paging.min.js': [ "compiled/footable.paging.js" ],
|
|
'compiled/footable.editing.min.js': [ "compiled/footable.editing.js" ],
|
|
'compiled/footable.state.min.js': [ "compiled/footable.state.js" ],
|
|
'compiled/footable.export.min.js': [ "compiled/footable.export.js" ]
|
|
}
|
|
}
|
|
},
|
|
cssmin: {
|
|
minify: {
|
|
options: {
|
|
keepSpecialComments: 1
|
|
},
|
|
files: {
|
|
'compiled/footable.core.standalone.min.css': [ "compiled/footable.core.standalone.css" ],
|
|
'compiled/footable.standalone.min.css': [ "compiled/footable.standalone.css" ],
|
|
'compiled/footable.core.bootstrap.min.css': [ "compiled/footable.core.bootstrap.css" ],
|
|
'compiled/footable.bootstrap.min.css': [ "compiled/footable.bootstrap.css" ],
|
|
'compiled/footable.filtering.min.css': [ "compiled/footable.filtering.css" ],
|
|
'compiled/footable.sorting.min.css': [ "compiled/footable.sorting.css" ],
|
|
'compiled/footable.paging.min.css': [ "compiled/footable.paging.css" ],
|
|
'compiled/footable.editing.min.css': [ "compiled/footable.editing.css" ]
|
|
}
|
|
}
|
|
},
|
|
compress: {
|
|
bootstrap: {
|
|
options: {
|
|
archive: 'releases/footable-bootstrap.v<%= pkg.version %>.zip'
|
|
},
|
|
files: [{
|
|
expand: true,
|
|
cwd: 'compiled/',
|
|
src: [
|
|
'footable.bootstrap.css',
|
|
'footable.bootstrap.min.css'
|
|
],
|
|
dest: 'css/'
|
|
},{
|
|
expand: true,
|
|
cwd: 'compiled/',
|
|
src: [
|
|
'footable.js',
|
|
'footable.min.js'
|
|
],
|
|
dest: 'js/'
|
|
}]
|
|
},
|
|
standalone: {
|
|
options: {
|
|
archive: 'releases/footable-standalone.v<%= pkg.version %>.zip'
|
|
},
|
|
files: [{
|
|
expand: true,
|
|
cwd: 'compiled/',
|
|
src: [
|
|
'footable.standalone.css',
|
|
'footable.standalone.min.css'
|
|
],
|
|
dest: 'css/'
|
|
},{
|
|
expand: true,
|
|
cwd: 'compiled/',
|
|
src: [
|
|
'footable.js',
|
|
'footable.min.js'
|
|
],
|
|
dest: 'js/'
|
|
}]
|
|
},
|
|
components: {
|
|
options: {
|
|
archive: 'releases/footable-components.v<%= pkg.version %>.zip'
|
|
},
|
|
files: [{
|
|
expand: true,
|
|
cwd: 'compiled/',
|
|
src: [
|
|
'footable.core.bootstrap.css',
|
|
'footable.core.bootstrap.min.css',
|
|
'footable.core.standalone.css',
|
|
'footable.core.standalone.min.css',
|
|
'footable.filtering.css',
|
|
'footable.filtering.min.css',
|
|
'footable.paging.css',
|
|
'footable.paging.min.css',
|
|
'footable.sorting.css',
|
|
'footable.sorting.min.css',
|
|
'footable.editing.css',
|
|
'footable.editing.min.css'
|
|
],
|
|
dest: 'css/'
|
|
},{
|
|
expand: true,
|
|
cwd: 'compiled/',
|
|
src: [
|
|
'footable.core.js',
|
|
'footable.core.min.js',
|
|
'footable.filtering.js',
|
|
'footable.filtering.min.js',
|
|
'footable.paging.js',
|
|
'footable.paging.min.js',
|
|
'footable.sorting.js',
|
|
'footable.sorting.min.js',
|
|
'footable.editing.js',
|
|
'footable.editing.min.js',
|
|
'footable.state.js',
|
|
'footable.state.min.js',
|
|
'footable.export.js',
|
|
'footable.export.min.js'
|
|
],
|
|
dest: 'js/'
|
|
}]
|
|
}
|
|
},
|
|
copy: {
|
|
latest: {
|
|
files: [{
|
|
expand: true,
|
|
cwd: 'releases/',
|
|
src: ['footable-bootstrap.v<%= pkg.version %>.zip'],
|
|
dest: 'releases/',
|
|
rename: function(dest, src){
|
|
return dest + src.replace('v'+grunt.config('pkg.version'), 'latest');
|
|
}
|
|
},{
|
|
expand: true,
|
|
cwd: 'releases/',
|
|
src: ['footable-components.v<%= pkg.version %>.zip'],
|
|
dest: 'releases/',
|
|
rename: function(dest, src){
|
|
return dest + src.replace('v'+grunt.config('pkg.version'), 'latest');
|
|
}
|
|
},{
|
|
expand: true,
|
|
cwd: 'releases/',
|
|
src: ['footable-standalone.v<%= pkg.version %>.zip'],
|
|
dest: 'releases/',
|
|
rename: function(dest, src){
|
|
return dest + src.replace('v'+grunt.config('pkg.version'), 'latest');
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
jsdoc: {
|
|
dist: {
|
|
src: [
|
|
'./src/js/**/*.js',
|
|
'README.md'
|
|
],
|
|
jsdoc: './node_modules/.bin/jsdoc',
|
|
options: {
|
|
destination: 'docs/jsdocs',
|
|
configure: 'jsdoc.json',
|
|
template: './node_modules/jsdoc-oblivion/template'
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
// Load grunt tasks
|
|
grunt.loadNpmTasks('grunt-contrib-clean');
|
|
grunt.loadNpmTasks('grunt-contrib-uglify');
|
|
grunt.loadNpmTasks('grunt-contrib-concat');
|
|
grunt.loadNpmTasks('grunt-contrib-cssmin');
|
|
grunt.loadNpmTasks('grunt-contrib-compress');
|
|
grunt.loadNpmTasks('grunt-contrib-copy');
|
|
grunt.loadNpmTasks('grunt-jsdoc');
|
|
grunt.registerTask('default', ['clean:compiled', 'concat', 'uglify', 'cssmin']);
|
|
grunt.registerTask('package', ['default', 'clean:releases', 'compress', 'copy']);
|
|
grunt.registerTask('jsdocs', ['clean:jsdoc','jsdoc']);
|
|
};
|