module.exports = function(grunt) {
"use strict";
+ var btoa = require('btoa')
// 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',
- jqueryCheck: 'if (!jQuery) { throw new Error(\"Bootstrap requires jQuery\") }\n\n',
+ banner: '/*!\n' +
+ ' * Bootstrap v<%= pkg.version %> by @fat and @mdo\n' +
+ ' * Copyright <%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +
+ ' * Licensed under <%= _.pluck(pkg.licenses, "url").join(", ") %>\n' +
+ ' *\n' +
+ ' * Designed and built with all the love in the world by @mdo and @fat.\n' +
+ ' */\n\n',
+ jqueryCheck: 'if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery") }\n\n',
// Task configuration.
clean: {
uglify: {
options: {
- banner: '<%= banner %>'
+ banner: '<%= banner %>',
+ report: 'min'
},
bootstrap: {
src: ['<%= concat.bootstrap.dest %>'],
recess: {
options: {
- compile: true
+ compile: true,
+ banner: '<%= banner %>'
},
bootstrap: {
src: ['less/bootstrap.less'],
validation: {
options: {
- reset: true
+ reset: true,
+ relaxerror: [
+ "Bad value X-UA-Compatible for attribute http-equiv on element meta.",
+ "Element img is missing required attribute src."
+ ]
},
files: {
src: ["_gh_pages/**/*.html"]
// These plugins provide necessary tasks.
+ grunt.loadNpmTasks('browserstack-runner');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-html-validation');
grunt.loadNpmTasks('grunt-jekyll');
grunt.loadNpmTasks('grunt-recess');
- grunt.loadNpmTasks('browserstack-runner');
// Docs HTML validation task
grunt.registerTask('validate-html', ['jekyll', 'validation']);
return type == 'fonts' ? true : new RegExp('\\.' + type + '$').test(path)
})
.forEach(function (path) {
- return files[path] = fs.readFileSync(type + '/' + path, 'utf8')
+ var fullPath = type + '/' + path
+ return files[path] = (type == 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8'))
})
return 'var __' + type + ' = ' + JSON.stringify(files) + '\n'
}
- var customize = fs.readFileSync('customize.html', 'utf-8')
var files = getFiles('js') + getFiles('less') + getFiles('fonts')
- fs.writeFileSync('assets/js/raw-files.js', files)
+ fs.writeFileSync('docs-assets/js/raw-files.js', files)
});
-};
\ No newline at end of file
+};