module-indexer
Version:
creates a `index.js` for es6 modules
67 lines (42 loc) • 2.11 kB
JavaScript
;
exports.__esModule = true;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _getModules = require('get-modules');
var _getModules2 = _interopRequireDefault(_getModules);
var _fs = require('fs');
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _chickencurry = require('chickencurry');
var _chickencurry2 = _interopRequireDefault(_chickencurry);
var _linersMap = require('1-liners/map');
var _linersMap2 = _interopRequireDefault(_linersMap);
var _linersJoin = require('1-liners/join');
var _linersJoin2 = _interopRequireDefault(_linersJoin);
var _linersCompose = require('1-liners/compose');
var _linersCompose2 = _interopRequireDefault(_linersCompose);
var _linersReduce = require('1-liners/reduce');
var _linersReduce2 = _interopRequireDefault(_linersReduce);
var _linersFilter = require('1-liners/filter');
var _linersFilter2 = _interopRequireDefault(_linersFilter);
var mapλ = (0, _chickencurry2['default'])(_linersMap2['default']);
var joinλ = (0, _chickencurry2['default'])(_linersJoin2['default']);
var filterλ = (0, _chickencurry2['default'])(_linersFilter2['default']);
var removeExt = mapλ(function (module) {
return module.replace('.js', '');
});
var filterIndex = filterλ(function (module) {
return module !== 'index.js';
});
var createImports = (0, _linersReduce2['default'])(_linersCompose2['default'], [joinλ('\n'), mapλ(function (module) {
return 'import ' + module + ' from \'./' + module + '\';';
}), removeExt, filterIndex]);
var createExport = (0, _linersReduce2['default'])(_linersCompose2['default'], [joinλ(',\n '), removeExt, filterIndex]);
exports['default'] = function (root, callback) {
return (0, _getModules2['default'])(root, function (err, modules) {
if (err) throw err;
var imports = createImports(modules);
var exportDefault = 'export {\n ' + createExport(modules) + '\n};';
(0, _fs.writeFile)(_path2['default'].join(root, 'module', 'index.js'), '' + imports + '\n\n' + exportDefault, callback);
});
};
module.exports = exports['default'];