Versatile OpenID Connect stack for ASP.NET Core and Microsoft.Owin (compatible with ASP.NET 4.6.1)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

173 lines
4.3 KiB

/* jshint node: true */
function mountFolder (connect, dir) {
return connect.static(require('path').resolve(dir));
}
module.exports = function(grunt) {
"use strict";
// Project configuration.
grunt.initConfig({
// Metadata.
pkg: grunt.file.readJSON('package.json'),
banner: '/*! \n' +
' * <%= pkg.name %> v<%= pkg.version %>\n' +
' * <%= pkg.repository.url %> \n' +
' * \n' +
' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +
' * Licensed under the <%= pkg.licenses[0].type %> license\n' +
' * \n' +
' * \n' +
' * Including Hammer.js@1.0.6dev, http://eightmedia.github.com/hammer.js \n' +
' */ \n',
functionalScope: {
header: '+function ($) {\n' +
' "use strict";\n' +
'\n' +
' if (!("ontouchstart" in window || navigator.msMaxTouchPoints)) return false \n\n',
footer: '}(window.jQuery);'
},
jshint: {
options: {
jshintrc: '.jshintrc'
},
gruntfile: {
src: 'Gruntfile.js'
},
src: {
src: ['src/js/*.js']
},
test: {
src: ['src/js/tests/unit/*.js']
}
},
concat: {
options: {
banner: '<%= functionalScope.header %>',
footer: '<%= functionalScope.footer %>',
stripBanners: false
},
js: {
src: [
'src/js/transition.js',
'src/js/touch-carousel.js',
],
dest: 'dist/js/<%= pkg.name %>.js'
}
},
uglify: {
options: {
banner: '<%= banner %>',
report: 'min'
},
js: {
src: ['<%= concat.js.dest %>', 'vendor/hammerjs/dist/jquery.hammer.js',],
dest: 'dist/js/<%= pkg.name %>.js'
}
},
less: {
dev: {
options: {
compile: true,
dumpLineNumbers: 'comments'
},
src: ['src/less/*.less'],
dest: 'dist/css/<%= pkg.name %>.css'
},
prod: {
options: {
compile: true,
banner: '<%= banner %>',
compress: false
},
src: ['src/less/*.less'],
dest: 'dist/css/<%= pkg.name %>.css'
}
},
cssmin: {
prod: {
options: {
banner: '/* <%= pkg.name %> v<%= pkg.version %>, (c) <%= grunt.template.today("yyyy") %> <%= pkg.author %> */',
report: 'min'
},
files: {
'dist/css/<%= pkg.name %>.css': '<%= less.prod.dest %>'
}
}
},
qunit: {
//options: {
// inject: 'src/js/tests/unit/phantom.js'
//},
options: {
//'phantomPath': 'node_modules/phantomjs/lib/phantom/phantomjs.exe',
'--local-to-remote-url-access': 'no',
'--proxy': '127.0.01',
timeout: 5000,
console: true
},
test: {
options: {
urls: ['http://127.0.0.1:<%= connect.test.options.port %>/index.html']
}
}
//files: ['src/js/tests/index.html']
},
connect: {
test: {
options: {
port: 9002,
hostname: '127.0.0.1',
middleware: function (connect) {
return [
mountFolder(connect, 'dist'),
mountFolder(connect, 'src/js/tests'),
];
}
}
}
},
watch: {
less: {
files: 'src/less/*.less',
tasks: ['less:dev']
},
js: {
files: 'src/js/*.js',
tasks: ['jshint', 'concat', 'uglify']
}
},
bump: {
options: {
commitFiles: ['-a'],
pushTo: 'git@github.com:ixisio/bootstrap-touch-carousel.git'
}
}
});
// These plugins provide necessary tasks.
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-qunit');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-bump');
grunt.registerTask('default', ['watch']);
grunt.registerTask('test', ['jshint', 'connect:test', 'qunit:test']);
grunt.registerTask('build', ['jshint', 'test', 'concat', 'uglify', 'less:prod', 'cssmin']);
};