build-boiler
Version:
Build Boilerplate using Webpack, Eslint, Assemble, Nunjucks, and BrowserSync
93 lines (63 loc) • 2.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports.default = function (config) {
var sources = config.sources;
var utils = config.utils;
var srcDir = sources.srcDir;
var templateDir = sources.templateDir;
var addbase = utils.addbase;
var plasma = new _plasma2.default();
/**
* Namespace the page and mock data
*/
function addNamespaceData(fp, data) {
var baseDir = _path2.default.dirname(fp);
var html = (0, _globby.sync)(_path2.default.join(baseDir, '*.html'));
return html.reduce(function (acc, htmlPath) {
return _extends({}, acc, _defineProperty({}, (0, _renameKey2.default)(htmlPath), data));
}, {});
}
plasma.dataLoader('yml', function (fp) {
var ymlStr = (0, _fs.readFileSync)(fp, 'utf8');
var data = {
page_data: (0, _jsYaml.safeLoad)(ymlStr)
};
return addNamespaceData(fp, data);
});
plasma.dataLoader('json', function (fp) {
var jsonData = (0, _fsExtra.readJsonSync)(fp);
var data = {
page_data: jsonData
};
return addNamespaceData(fp, data);
});
return function (file, next) {
try {
var pageData = plasma.load(addbase(srcDir, templateDir, '**/*.{json,yml}'), { namespace: false });
if (_lodash2.default.isPlainObject(pageData)) {
var currentPageData = pageData[file.key];
currentPageData && _lodash2.default.merge(file.data, currentPageData);
}
} catch (err) {
next(err);
}
};
};
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _globby = require('globby');
var _fsExtra = require('fs-extra');
var _jsYaml = require('js-yaml');
var _fs = require('fs');
var _plasma = require('plasma');
var _plasma2 = _interopRequireDefault(_plasma);
var _renameKey = require('../../../../utils/rename-key');
var _renameKey2 = _interopRequireDefault(_renameKey);
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; }
module.exports = exports['default'];