twbs--bootstrap/grunt/bs-raw-files-generator.js

45 lines
1.3 KiB
JavaScript
Raw Normal View History

2014-01-21 00:00:52 +00:00
/*!
* Bootstrap Grunt task for generating raw-files.min.js for the Customizer
* http://getbootstrap.com
2015-04-28 08:11:49 +00:00
* Copyright 2014-2015 Twitter, Inc.
2014-01-21 00:00:52 +00:00
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
2014-03-07 16:59:43 +00:00
'use strict';
2015-04-26 10:53:45 +00:00
var fs = require('fs');
var btoa = require('btoa');
var glob = require('glob');
function getFiles(type) {
var files = {};
2015-04-26 10:53:45 +00:00
var recursive = type === 'less';
var globExpr = recursive ? '/**/*' : '/*';
glob.sync(type + globExpr)
.filter(function (path) {
return type === 'fonts' ? true : new RegExp('\\.' + type + '$').test(path);
})
.forEach(function (fullPath) {
var relativePath = fullPath.replace(/^[^/]+\//, '');
2015-04-26 10:53:45 +00:00
files[relativePath] = type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8');
});
return 'var __' + type + ' = ' + JSON.stringify(files) + '\n';
}
module.exports = function generateRawFilesJs(grunt, banner) {
2014-01-14 21:25:27 +00:00
if (!banner) {
banner = '';
2014-01-14 21:25:27 +00:00
}
var dirs = ['js', 'less', 'fonts'];
var files = banner + dirs.map(getFiles).reduce(function (combined, file) {
return combined + file;
}, '');
var rawFilesJs = 'docs/assets/js/raw-files.min.js';
try {
fs.writeFileSync(rawFilesJs, files);
2015-04-26 10:53:45 +00:00
} catch (err) {
grunt.fail.warn(err);
}
grunt.log.writeln('File ' + rawFilesJs.cyan + ' created.');
};