Скрипт запускает gulp задачу, берет bower.json и сортирует список скриптов в алфавитном порядке.
gulp.task('bower-sort', function () {
var newBowerJSON = {},
bowerPath = 'bower.json';// путь к файлу
objGetFromFile(bowerPath);
objSaveToFile(newBowerJSON, bowerPath);
function objGetFromFile(path) {
try {
var bowerFile = fs.readFileSync(path, 'utf8'),
bowerJSON = JSON.parse(bowerFile),
tempObj = {};
} catch(e) {
throw e;
}
newBowerJSON = bowerJSON;
if (bowerJSON.hasOwnProperty('devDependencies')) {
tempObj = sortObj(bowerJSON.devDependencies);
newBowerJSON.devDependencies = tempObj;
}
if (bowerJSON.hasOwnProperty('dependencies')) {
tempObj = sortObj(bowerJSON.dependencies);
newBowerJSON.dependencies = tempObj;
}
}
/* Сортировка строк */
function sortObj(obj) {
if (Object.getPrototypeOf(obj) !== Object.prototype) {
throw 'not an object';
}
var myObj = obj,
keys = [],
output = {},
k, i, len;
for (k in myObj) {
if (myObj.hasOwnProperty(k)) {
keys.push(k);
}
}
keys.sort();
for (i = 0, len = keys.length; i < len; i++) {
output[keys[i]] = myObj[keys[i]];
}
return output;
}
/* Перезапись файла */
function objSaveToFile(obj, path) {
if (!!obj.length)
throw 'obj has no required fields';
var result = '';
try {
fs.writeFileSync(
path,
JSON.stringify(obj, null, 2),
'utf8'
);
result = 'saved';
} catch (e) {
result = e;
} finally {
notify({
title: 'bower sort',
message: result
});
}
}
});