patternfly
Version:
This reference implementation of PatternFly is based on [Bootstrap v3](http://getbootstrap.com/). Think of PatternFly as a "skinned" version of Bootstrap with additional components and customizations.
177 lines (169 loc) • 3.9 kB
JavaScript
/*global module,require*/
var lrSnippet = require('connect-livereload')();
var mountFolder = function (connect, dir) {
return connect.static(require('path').resolve(dir));
};
module.exports = function (grunt) {
// load all grunt tasks
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
// configurable paths
var projectConfig = {
dist: 'dist',
src: ''
};
try {
projectConfig.src = require('./bower.json').appPath || projectConfig.src;
} catch (e) {}
grunt.initConfig({
clean: {
build: '<%= config.dist %>'
},
config: projectConfig,
connect: {
server: {
options: {
hostname: '0.0.0.0',
middleware: function (connect) {
return [
lrSnippet,
mountFolder(connect, projectConfig.src),
mountFolder(connect, projectConfig.src + 'tests')
];
},
port: 9000
}
}
},
csscount: {
production: {
src: [
'dist/css/patternfly*.min.css'
],
options: {
maxSelectors: 4096
}
}
},
cssmin: {
production: {
files: [{
expand: true,
cwd: 'dist/css',
src: ['patternfly*.css', '!*.min.css'],
dest: 'dist/css',
ext: '.min.css',
}],
options: {
sourceMap: true
}
}
},
jekyll: {
options: {
src: 'tests-src'
},
tests: {
options: {
dest: 'tests'
}
}
},
jslint: {
client: {
src: [
'dist/js/patternfly.js'
],
directives: {
// node environment
node: false,
// browser environment
browser: true,
// allow dangling underscores
nomen: true,
// allow todo statements
todo: true,
// allow unused parameters
unparam: true,
// add predefined libraries
predef: [
'jQuery'
],
indent: 2
}
}
},
less: {
patternfly: {
files: {
'dist/css/patternfly.css': 'less/patternfly.less',
},
options: {
paths: ['less/'],
sourceMap: true,
outputSourceFiles: true,
sourceMapFilename: 'dist/css/patternfly.css.map',
sourceMapURL: 'patternfly.css.map'
}
},
patternflyAdditions: {
files: {
'dist/css/patternfly-additions.css': 'less/patternfly-additions.less'
},
options: {
paths: ['less/'],
sourceMap: true,
outputSourceFiles: true,
sourceMapFilename: 'dist/css/patternfly-additions.css.map',
sourceMapURL: 'patternfly-additions.css.map'
}
}
},
uglify: {
options: {
mangle: false
},
production: {
files: {
'dist/js/patternfly.min.js': ['dist/js/patternfly.js']
}
}
},
watch: {
jekyll: {
files: 'tests-src/**/*',
tasks: ['jekyll']
},
less: {
files: 'less/*.less',
tasks: ['less']
},
css: {
files: ['dist/css/patternfly*.css', 'dist/css/!*.min.css'],
tasks: ['cssmin', 'csscount']
},
js: {
files: ['dist/js/*.js', '!dist/js/*.min.js'],
tasks: ['jslint', 'uglify']
},
livereload: {
files: ['dist/css/*.css', 'dist/js/*.js', 'tests/*.html', '!tests-src/*.html']
},
options: {
livereload: true
}
}
});
grunt.registerTask('build', [
'jekyll',
'less',
'cssmin',
'csscount',
'jslint',
'uglify'
]);
grunt.registerTask('server', [
'connect:server',
'watch'
]);
grunt.registerTask('default', ['build']);
};