aboutsummaryrefslogtreecommitdiff
path: root/Gruntfile.js
diff options
context:
space:
mode:
authorJohn-Philip Johansson <[email protected]>2013-05-04 16:55:52 +0200
committerChris Rebert <[email protected]>2013-07-26 00:39:14 -0700
commit0d33455ef486d0cf06cb29d427efda57f42f7ea9 (patch)
treef7ddc320adff7ed7bed55b90665bb1dad3e8e01e /Gruntfile.js
parent995add132efdb6557f191f1a65097f19260a4f7d (diff)
downloadbootstrap-0d33455ef486d0cf06cb29d427efda57f42f7ea9.tar.xz
bootstrap-0d33455ef486d0cf06cb29d427efda57f42f7ea9.zip
Replace Makefile with GruntJS
A rebase (against soon-to-be 3.0.0-rc.1) & squash of https://github.com/twbs/bootstrap/pull/7786 AKA https://github.com/twitter/bootstrap/pull/7786 originally by @seriema @mokkabonna @jojohess Rebased by @cvrebert
Diffstat (limited to 'Gruntfile.js')
-rw-r--r--Gruntfile.js124
1 files changed, 124 insertions, 0 deletions
diff --git a/Gruntfile.js b/Gruntfile.js
new file mode 100644
index 000000000..222bb25b6
--- /dev/null
+++ b/Gruntfile.js
@@ -0,0 +1,124 @@
+module.exports = function(grunt) {
+
+ // Project configuration.
+ grunt.initConfig({
+ // Metadata.
+ pkg: grunt.file.readJSON('package.json'),
+ banner: '/**\n' +
+ '* <%= pkg.name %>.js v<%= pkg.version %> by @fat and @mdo\n' +
+ '* Copyright <%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +
+ '* <%= _.pluck(pkg.licenses, "url").join(", ") %>\n' +
+ '*/\n',
+ // Task configuration.
+ clean: {
+ dist: ['dist']
+ },
+ concat: {
+ options: {
+ banner: '<%= banner %>',
+ stripBanners: false
+ },
+ bootstrap: {
+ src: ['js/*.js'],
+ dest: 'dist/js/<%= pkg.name %>.js'
+ }
+ },
+ jshint: {
+ options: {
+ jshintrc: 'js/.jshintrc'
+ },
+ gruntfile: {
+ src: 'Gruntfile.js'
+ },
+ src: {
+ src: ['js/*.js']
+ },
+ test: {
+ src: ['js/tests/unit/*.js']
+ }
+ },
+ recess: {
+ options: {
+ compile: true
+ },
+ bootstrap: {
+ files: {
+ 'dist/css/bootstrap.css': ['less/bootstrap.less']
+ }
+ },
+ min: {
+ options: {
+ compress: true
+ },
+ files: {
+ 'dist/css/bootstrap.min.css': ['less/bootstrap.less']
+ }
+ }
+ },
+ uglify: {
+ options: {
+ banner: '<%= banner %>'
+ },
+ bootstrap: {
+ files: {
+ 'dist/js/<%= pkg.name %>.min.js': ['<%= concat.bootstrap.dest %>']
+ }
+ }
+ },
+ qunit: {
+ options: {
+ inject: 'js/tests/unit/phantom.js'
+ },
+ files: ['js/tests/*.html']
+ },
+ connect: {
+ server: {
+ options: {
+ port: 3000,
+ base: '.'
+ }
+ }
+ },
+ watch: {
+ src: {
+ files: '<%= jshint.src.src %>',
+ tasks: ['jshint:src', 'qunit']
+ },
+ test: {
+ files: '<%= jshint.test.src %>',
+ tasks: ['jshint:test', 'qunit']
+ },
+ recess: {
+ files: 'less/*.less',
+ tasks: ['recess']
+ }
+ }
+ });
+
+
+ // These plugins provide necessary tasks.
+ grunt.loadNpmTasks('grunt-contrib-connect');
+ grunt.loadNpmTasks('grunt-contrib-clean');
+ grunt.loadNpmTasks('grunt-contrib-concat');
+ grunt.loadNpmTasks('grunt-contrib-jshint');
+ grunt.loadNpmTasks('grunt-contrib-uglify');
+ grunt.loadNpmTasks('grunt-contrib-qunit');
+ grunt.loadNpmTasks('grunt-contrib-watch');
+ grunt.loadNpmTasks('grunt-recess');
+
+
+ // Test task.
+ grunt.registerTask('test', ['jshint', 'qunit']);
+
+ // JS distribution task.
+ grunt.registerTask('dist-js', ['concat', 'uglify']);
+
+ // CSS distribution task.
+ grunt.registerTask('dist-css', ['recess']);
+
+ // Full distribution task.
+ grunt.registerTask('dist', ['clean', 'dist-css', 'dist-js']);
+
+ // Default task.
+ grunt.registerTask('default', ['test', 'dist']);
+};