You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

29 lines
670 B

  1. function extsToRegExp(exts) {
  2. return new RegExp("\\.(" + exts.map(function(ext) {
  3. return ext.replace(/\./g, "\\.");
  4. }).join("|") + ")(\\?.*)?$");
  5. }
  6. module.exports = function loadersByExtension(obj) {
  7. var loaders = [];
  8. Object.keys(obj).forEach(function(key) {
  9. var exts = key.split("|");
  10. var value = obj[key];
  11. var entry = {
  12. extensions: exts,
  13. test: extsToRegExp(exts)
  14. };
  15. if(Array.isArray(value)) {
  16. entry.loaders = value;
  17. } else if(typeof value === "string") {
  18. entry.loader = value;
  19. } else {
  20. Object.keys(value).forEach(function(valueKey) {
  21. entry[valueKey] = value[valueKey];
  22. });
  23. }
  24. loaders.push(entry);
  25. });
  26. return loaders;
  27. };