diff options
Diffstat (limited to 'Gruntfile.js')
-rw-r--r-- | Gruntfile.js | 114 |
1 files changed, 84 insertions, 30 deletions
diff --git a/Gruntfile.js b/Gruntfile.js index c4da304ddb..4aaef63ef6 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -44,6 +44,9 @@ module.exports = function (grunt) { jshintrc: 'js/.jshintrc' }, grunt: { + options: { + jshintrc: 'grunt/.jshintrc' + }, src: ['Gruntfile.js', 'grunt/*.js'] }, src: { @@ -53,25 +56,29 @@ module.exports = function (grunt) { src: 'js/tests/unit/*.js' }, assets: { - src: ['docs/assets/js/application.js', 'docs/assets/js/customizer.js'] + src: 'docs/assets/js/src/*.js' } }, jscs: { options: { - config: 'js/.jscs.json', + config: 'js/.jscsrc' }, grunt: { - src: ['Gruntfile.js', 'grunt/*.js'] + options: { + 'requireCamelCaseOrUpperCaseIdentifiers': null, + 'requireParenthesesAroundIIFE': true + }, + src: '<%= jshint.grunt.src %>' }, src: { - src: 'js/*.js' + src: '<%= jshint.src.src %>' }, test: { - src: 'js/tests/unit/*.js' + src: '<%= jshint.test.src %>' }, assets: { - src: ['docs/assets/js/application.js', 'docs/assets/js/customizer.js'] + src: '<%= jshint.assets.src %>' } }, @@ -81,10 +88,18 @@ module.exports = function (grunt) { }, src: [ 'dist/css/bootstrap.css', - 'dist/css/bootstrap-theme.css', - 'docs/assets/css/docs.css', + 'dist/css/bootstrap-theme.css' + ], + examples: [ 'docs/examples/**/*.css' - ] + ], + docs: { + options: { + 'ids': false, + 'overqualified-elements': false + }, + src: 'docs/assets/css/src/docs.css' + } }, concat: { @@ -128,12 +143,12 @@ module.exports = function (grunt) { }, src: [ 'docs/assets/js/vendor/less.min.js', - 'docs/assets/js/vendor/jszip.js', + 'docs/assets/js/vendor/jszip.min.js', 'docs/assets/js/vendor/uglify.min.js', 'docs/assets/js/vendor/blob.js', 'docs/assets/js/vendor/filesaver.js', 'docs/assets/js/raw-files.min.js', - 'docs/assets/js/customizer.js' + 'docs/assets/js/src/customizer.js' ], dest: 'docs/assets/js/customize.min.js' }, @@ -143,7 +158,7 @@ module.exports = function (grunt) { }, src: [ 'docs/assets/js/vendor/holder.js', - 'docs/assets/js/application.js' + 'docs/assets/js/src/application.js' ], dest: 'docs/assets/js/docs.min.js' } @@ -181,22 +196,58 @@ module.exports = function (grunt) { }, files: { 'dist/css/<%= pkg.name %>.min.css': 'dist/css/<%= pkg.name %>.css', + 'dist/css/<%= pkg.name %>-rtl.min.css': 'dist/css/<%= pkg.name %>-rtl.css', 'dist/css/<%= pkg.name %>-theme.min.css': 'dist/css/<%= pkg.name %>-theme.css' } } }, + autoprefixer: { + options: { + browsers: ['last 2 versions', 'ie 8', 'ie 9', 'android 2.3', 'android 4', 'opera 12'] + }, + core: { + options: { + map: true + }, + src: 'dist/css/<%= pkg.name %>.css' + }, + theme: { + options: { + map: true + }, + src: 'dist/css/<%= pkg.name %>-theme.css' + }, + docs: { + src: 'docs/assets/css/docs.css' + }, + examples: { + expand: true, + cwd: 'docs/examples/', + src: ['**/*.css'], + dest: 'docs/examples/' + } + }, + + css_flip: { + rtl: { + files: { + 'dist/css/<%= pkg.name %>-rtl.css': 'dist/css/<%= pkg.name %>.css' + } + } + }, + cssmin: { compress: { options: { keepSpecialComments: '*', noAdvanced: true, // turn advanced optimizations off until the issue is fixed in clean-css report: 'min', - selectorsMergeMode: 'ie8' + compatibility: 'ie8' }, src: [ - 'docs/assets/css/docs.css', - 'docs/assets/css/pygments-manni.css' + 'docs/assets/css/src/docs.css', + 'docs/assets/css/src/pygments-manni.css' ], dest: 'docs/assets/css/docs.min.css' } @@ -211,7 +262,9 @@ module.exports = function (grunt) { files: { src: [ 'dist/css/<%= pkg.name %>.css', + 'dist/css/<%= pkg.name %>-rtl.css', 'dist/css/<%= pkg.name %>.min.css', + 'dist/css/<%= pkg.name %>-rtl.min.css', 'dist/css/<%= pkg.name %>-theme.css', 'dist/css/<%= pkg.name %>-theme.min.css' ] @@ -226,14 +279,20 @@ module.exports = function (grunt) { dist: { files: { 'dist/css/<%= pkg.name %>.css': 'dist/css/<%= pkg.name %>.css', + 'dist/css/<%= pkg.name %>-rtl.css': 'dist/css/<%= pkg.name %>-rtl.css', 'dist/css/<%= pkg.name %>-theme.css': 'dist/css/<%= pkg.name %>-theme.css' } }, examples: { - expand: true, - cwd: 'docs/examples/', - src: ['**/*.css'], - dest: 'docs/examples/' + expand: true, + cwd: 'docs/examples/', + src: '**/*.css', + dest: 'docs/examples/' + }, + docs: { + files: { + 'docs/assets/css/src/docs.css': 'docs/assets/css/src/docs.css' + } } }, @@ -259,7 +318,7 @@ module.exports = function (grunt) { options: { inject: 'js/tests/unit/phantom.js' }, - files: 'js/tests/*.html' + files: 'js/tests/index.html' }, connect: { @@ -287,8 +346,8 @@ module.exports = function (grunt) { } }, files: { - 'docs/_includes/customizer-variables.html': 'docs/customizer-variables.jade', - 'docs/_includes/nav-customize.html': 'docs/customizer-nav.jade' + 'docs/_includes/customizer-variables.html': 'docs/jade/customizer-variables.jade', + 'docs/_includes/nav-customize.html': 'docs/jade/customizer-nav.jade' } } }, @@ -359,7 +418,7 @@ module.exports = function (grunt) { // These plugins provide necessary tasks. require('load-grunt-tasks')(grunt, {scope: 'devDependencies'}); - grunt.loadNpmTasks('browserstack-runner'); + require('time-grunt')(grunt); // Docs HTML validation task grunt.registerTask('validate-html', ['jekyll', 'validation']); @@ -381,19 +440,14 @@ module.exports = function (grunt) { testSubtasks.push('connect'); testSubtasks.push('saucelabs-qunit'); } - // Only run BrowserStack tests if there's a BrowserStack access key - if (typeof process.env.BROWSERSTACK_KEY !== 'undefined' && - // Skip BrowserStack if running a different subset of the test suite - (!process.env.TWBS_TEST || process.env.TWBS_TEST === 'browserstack-js-unit')) { - testSubtasks.push('browserstack_runner'); - } grunt.registerTask('test', testSubtasks); // JS distribution task. grunt.registerTask('dist-js', ['concat', 'uglify']); // CSS distribution task. - grunt.registerTask('dist-css', ['less', 'cssmin', 'csscomb', 'usebanner']); + grunt.registerTask('less-compile', ['less:compileCore', 'less:compileTheme']); + grunt.registerTask('dist-css', ['less-compile', 'autoprefixer', 'css_flip', 'csscomb', 'less:minify', 'cssmin', 'usebanner']); // Docs distribution task. grunt.registerTask('dist-docs', 'copy:docs'); |