### JS
-- No semicolons
+- No semicolons (in client-side JS)
- 2 spaces (no tabs)
- strict mode
- "Attractive"
},
grunt: {
options: {
- node: true
+ jshintrc: 'grunt/.jshintrc'
},
src: ['Gruntfile.js', 'grunt/*.js']
},
--- /dev/null
+{
+ "asi": false,
+ "camelcase": true,
+ "curly": true,
+ "eqeqeq": true,
+ "immed": true,
+ "indent": 2,
+ "newcap": true,
+ "noarg": true,
+ "nonbsp": true,
+ "quotmark": "single",
+ "undef": true,
+ "strict": true,
+ "trailing": true,
+ "node" : true
+}
* Copyright 2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
-
-var fs = require('fs')
+'use strict';
+var fs = require('fs');
module.exports = function generateGlyphiconsData() {
// Pass encoding, utf8, so `readFileSync` will return a string instead of a
// buffer
- var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8')
- var glpyhiconsLines = glyphiconsFile.split('\n')
+ var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8');
+ var glpyhiconsLines = glyphiconsFile.split('\n');
// Use any line that starts with ".glyphicon-" and capture the class name
- var iconClassName = /^\.(glyphicon-[^\s]+)/
+ var iconClassName = /^\.(glyphicon-[^\s]+)/;
var glyphiconsData = '# This file is generated via Grunt task. **Do not edit directly.** \n' +
'# See the \'build-glyphicons-data\' task in Gruntfile.js.\n\n';
for (var i = 0, len = glpyhiconsLines.length; i < len; i++) {
- var match = glpyhiconsLines[i].match(iconClassName)
+ var match = glpyhiconsLines[i].match(iconClassName);
- if (match != null) {
- glyphiconsData += '- ' + match[1] + '\n'
+ if (match !== null) {
+ glyphiconsData += '- ' + match[1] + '\n';
}
}
// Create the `_data` directory if it doesn't already exist
- if (!fs.existsSync('docs/_data')) fs.mkdirSync('docs/_data')
+ if (!fs.existsSync('docs/_data')) {
+ fs.mkdirSync('docs/_data');
+ }
- fs.writeFileSync('docs/_data/glyphicons.yml', glyphiconsData)
-}
+ fs.writeFileSync('docs/_data/glyphicons.yml', glyphiconsData);
+};
* Copyright 2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
+'use strict';
var markdown = require('markdown').markdown;
/* global btoa: true */
-
/*!
* Bootstrap Grunt task for generating raw-files.min.js for the Customizer
* http://getbootstrap.com
* Copyright 2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
-
-var btoa = require('btoa')
-var fs = require('fs')
+'use strict';
+var btoa = require('btoa');
+var fs = require('fs');
function getFiles(type) {
- var files = {}
+ var files = {};
fs.readdirSync(type)
.filter(function (path) {
- return type == 'fonts' ? true : new RegExp('\\.' + type + '$').test(path)
+ return type === 'fonts' ? true : new RegExp('\\.' + type + '$').test(path);
})
.forEach(function (path) {
- 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 fullPath = type + '/' + path;
+ files[path] = (type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8'));
+ });
+ return 'var __' + type + ' = ' + JSON.stringify(files) + '\n';
}
module.exports = function generateRawFilesJs(banner) {
if (!banner) {
- banner = ''
+ banner = '';
}
- var files = banner + getFiles('js') + getFiles('less') + getFiles('fonts')
- fs.writeFileSync('docs/assets/js/raw-files.min.js', files)
-}
+ var files = banner + getFiles('js') + getFiles('less') + getFiles('fonts');
+ fs.writeFileSync('docs/assets/js/raw-files.min.js', files);
+};
This Grunt task updates the npm-shrinkwrap.canonical.json file that's used as the key for Bootstrap's npm packages cache.
This task should be run and the updated file should be committed whenever Bootstrap's dependencies change.
*/
-
+'use strict';
var canonicallyJsonStringify = require('canonical-json');
var NON_CANONICAL_FILE = 'npm-shrinkwrap.json';
var DEST_FILE = 'test-infra/npm-shrinkwrap.canonical.json';