babel-plugin-lodash-modularize
Version:
Babel plugin that replaces lodash library import statement to individual module imports.
78 lines (50 loc) • 2.22 kB
JavaScript
;
var _includes2 = require('lodash/includes');
var _includes3 = _interopRequireDefault(_includes2);
var _map2 = require('lodash/map');
var _map3 = _interopRequireDefault(_map2);
var _forEach2 = require('lodash/forEach');
var _forEach3 = _interopRequireDefault(_forEach2);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var categoryDirectoryNames = undefined,
lodashModuleDirectory = undefined,
mapDeclaration = undefined,
mappedFunctions = undefined; /**
* Used to generate map of the function categories.
*/
mappedFunctions = [];
mapDeclaration = [];
lodashModuleDirectory = _path2.default.dirname(require.resolve('lodash'));
categoryDirectoryNames = _fs2.default.readdirSync(lodashModuleDirectory);
(0, _forEach3.default)(categoryDirectoryNames, function (categoryDirectoryName) {
var categoryDirectoryPath = undefined,
modulesInCategory = undefined,
stat = undefined;
categoryDirectoryPath = _path2.default.join(lodashModuleDirectory, categoryDirectoryName);
stat = _fs2.default.statSync(categoryDirectoryPath);
if (!stat.isDirectory()) {
return;
}
modulesInCategory = _fs2.default.readdirSync(categoryDirectoryPath);
modulesInCategory = (0, _map3.default)(modulesInCategory, function (fileName) {
return fileName.slice(0, -3);
});
// modulesInCategory
(0, _forEach3.default)(modulesInCategory, function (moduleName) {
// Some (collection/math max, min) functions are declared as aliases.
if ((0, _includes3.default)(mappedFunctions, moduleName)) {
return;
}
mappedFunctions.push(moduleName);
mapDeclaration.push(moduleName + ': \'' + categoryDirectoryName + '\'');
});
});
mapDeclaration = 'export default {\n' + mapDeclaration.sort().map(function (moduleName) {
return ' ' + moduleName;
}).join(',\n') + '\n};';
console.log(mapDeclaration);
//# sourceMappingURL=index.js.map