191 lines
5.6 KiB
JavaScript
191 lines
5.6 KiB
JavaScript
module.exports = function (grunt) {
|
|
'use strict';
|
|
grunt.initConfig({
|
|
pkg: grunt.file.readJSON('package.json'),
|
|
|
|
uglify : {
|
|
target: {
|
|
files: {
|
|
'build/js/bootstrap-datetimepicker.min.js' : 'src/js/bootstrap-datetimepicker.js'
|
|
}
|
|
},
|
|
options: {
|
|
mangle: true,
|
|
compress: {
|
|
dead_code: false // jshint ignore:line
|
|
},
|
|
output: {
|
|
ascii_only: true // jshint ignore:line
|
|
},
|
|
report: 'min',
|
|
preserveComments: 'some'
|
|
}
|
|
},
|
|
|
|
jshint: {
|
|
all: [
|
|
'Gruntfile.js', 'src/js/*.js', 'test/*.js'
|
|
],
|
|
options: {
|
|
'browser' : true,
|
|
'node' : true,
|
|
'jquery' : true,
|
|
'boss' : false,
|
|
'curly' : true,
|
|
'debug' : false,
|
|
'devel' : false,
|
|
'eqeqeq' : true,
|
|
'bitwise' : true,
|
|
'eqnull' : true,
|
|
'evil' : false,
|
|
'forin' : true,
|
|
'immed' : false,
|
|
'laxbreak' : false,
|
|
'newcap' : true,
|
|
'noarg' : true,
|
|
'noempty' : false,
|
|
'nonew' : false,
|
|
'onevar' : true,
|
|
'plusplus' : false,
|
|
'regexp' : false,
|
|
'undef' : true,
|
|
'sub' : true,
|
|
'strict' : true,
|
|
'unused' : true,
|
|
'white' : true,
|
|
'es3' : true,
|
|
'camelcase' : true,
|
|
'quotmark' : 'single',
|
|
'globals': {
|
|
'define': false,
|
|
'moment': false,
|
|
// Jasmine
|
|
'jasmine': false,
|
|
'describe': false,
|
|
'xdescribe': false,
|
|
'expect': false,
|
|
'it': false,
|
|
'xit': false,
|
|
'spyOn': false,
|
|
'beforeEach': false,
|
|
'afterEach': false
|
|
}
|
|
}
|
|
},
|
|
|
|
jscs: {
|
|
all: [
|
|
'Gruntfile.js', 'src/js/*.js', 'test/*.js'
|
|
],
|
|
options: {
|
|
config: '.jscs.json'
|
|
}
|
|
},
|
|
|
|
less: {
|
|
production: {
|
|
options: {
|
|
cleancss: true,
|
|
compress: true,
|
|
paths: 'node_modules'
|
|
},
|
|
files: {
|
|
'build/css/bootstrap-datetimepicker.min.css': 'src/less/bootstrap-datetimepicker-build.less'
|
|
}
|
|
},
|
|
development: {
|
|
options: {
|
|
paths: 'node_modules'
|
|
},
|
|
files: {
|
|
'build/css/bootstrap-datetimepicker.css': 'src/less/bootstrap-datetimepicker-build.less'
|
|
}
|
|
}
|
|
},
|
|
|
|
jasmine: {
|
|
customTemplate: {
|
|
src: 'src/js/*.js',
|
|
options: {
|
|
specs: 'test/*Spec.js',
|
|
helpers: 'test/*Helper.js',
|
|
styles: [
|
|
'node_modules/bootstrap/dist/css/bootstrap.min.css',
|
|
'build/css/bootstrap-datetimepicker.min.css'
|
|
],
|
|
vendor: [
|
|
'node_modules/jquery/dist/jquery.min.js',
|
|
'node_modules/moment/min/moment-with-locales.min.js',
|
|
'node_modules/bootstrap/dist/js/bootstrap.min.js'
|
|
],
|
|
display: 'none',
|
|
summary: 'true'
|
|
}
|
|
}
|
|
},
|
|
|
|
nugetpack: {
|
|
less: {
|
|
src: 'src/nuget/Bootstrap.v3.Datetimepicker.nuspec',
|
|
dest: 'build/nuget',
|
|
options: {
|
|
version: '<%= pkg.version %>'
|
|
}
|
|
},
|
|
css: {
|
|
src: 'src/nuget/Bootstrap.v3.Datetimepicker.CSS.nuspec',
|
|
dest: 'build/nuget',
|
|
options: {
|
|
version: '<%= pkg.version %>'
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
grunt.loadTasks('tasks');
|
|
|
|
grunt.loadNpmTasks('grunt-contrib-jasmine');
|
|
grunt.loadNpmTasks('grunt-nuget');
|
|
|
|
// These plugins provide necessary tasks.
|
|
require('load-grunt-tasks')(grunt);
|
|
|
|
// Default task.
|
|
grunt.registerTask('default', ['jshint', 'jscs', 'less', 'jasmine']);
|
|
|
|
// travis build task
|
|
grunt.registerTask('build:travis', [
|
|
// code style
|
|
'jshint', 'jscs',
|
|
// build
|
|
'uglify', 'less',
|
|
// tests
|
|
'jasmine'
|
|
]);
|
|
|
|
// Task to be run when building
|
|
grunt.registerTask('build', [
|
|
'jshint', 'jscs', 'uglify', 'less'
|
|
]);
|
|
|
|
grunt.registerTask('test', ['jshint', 'jscs', 'uglify', 'less', 'jasmine']);
|
|
|
|
grunt.registerTask('docs', 'Generate docs', function () {
|
|
grunt.util.spawn({
|
|
cmd: 'mkdocs',
|
|
args: ['build', '--clean']
|
|
});
|
|
});
|
|
|
|
grunt.registerTask('release', function (version) {
|
|
if (!version || version.split('.').length !== 3) {
|
|
grunt.fail.fatal('malformed version. Use grunt release:1.2.3');
|
|
}
|
|
|
|
grunt.task.run([
|
|
'bump_version:' + version,
|
|
'build:travis',
|
|
'docs'
|
|
]);
|
|
});
|
|
};
|