diff options
| author | John-Philip Johansson <[email protected]> | 2013-05-04 16:55:52 +0200 |
|---|---|---|
| committer | Chris Rebert <[email protected]> | 2013-07-26 00:39:14 -0700 |
| commit | 0d33455ef486d0cf06cb29d427efda57f42f7ea9 (patch) | |
| tree | f7ddc320adff7ed7bed55b90665bb1dad3e8e01e /Gruntfile.js | |
| parent | 995add132efdb6557f191f1a65097f19260a4f7d (diff) | |
| download | bootstrap-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.js | 124 |
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']); +}; |
