build-boiler
Version:
Build Boilerplate using Webpack, Eslint, Assemble, Nunjucks, and BrowserSync
83 lines (61 loc) • 2.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (dirPath) {
var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var recurse = opts.recurse;
var dict = opts.dict;
var ogIgnore = opts.ignore;
var ignore = [];
if (ogIgnore) {
Array.isArray(ogIgnore) ? ignore.push.apply(ignore, _toConsumableArray(ogIgnore)) : ignore.push(ogIgnore);
}
return function recurseDirs(passedPath) {
var fps = _fs2.default.readdirSync(passedPath);
return fps.reduce(function (acc, fp) {
var name = _path2.default.basename(fp, _path2.default.extname(fp));
var shouldProceed = ignore.indexOf(name) === -1;
if (shouldProceed) {
var fullPath = _path2.default.join(passedPath, fp);
var isDir = _fs2.default.statSync(fullPath).isDirectory();
var data = undefined;
if (isDir && recurse) {
data = recurseDirs(fp);
dict ? _lodash2.default.assign(acc, data) : acc.push.apply(acc, _toConsumableArray(data));
} else {
data = require(fullPath);
if (_lodash2.default.isString(dict) && dict === 'basename') {
var key = _path2.default.basename(fullPath, _path2.default.extname(fullPath));
_lodash2.default.assign(acc, _defineProperty({}, _lodash2.default.camelCase(key), data));
} else if (dict) {
_lodash2.default.assign(acc, _defineProperty({}, fullPath, data));
} else {
acc.push(data);
}
}
}
return acc;
}, dict ? {} : []);
}(dirPath);
};
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
/**
* Require all files in a directory and place them in an obect
* by path name or an array by value
* @param {String} dirPath path to the directory
* @param {Object} opts options
* @param {Boolean} opts.recurse
* @param {String|Array} opts.ignore filepath name to ignore
* @param {Boolean} opts.dict return an Object rather than an Array
* @return {Array|Object}
*/
module.exports = exports['default'];