createResolver.js 736 B

123456789101112131415161718192021222324252627282930313233343536
  1. module.exports = function createResolver(alias) {
  2. if(typeof alias !== "object" || Array.isArray(alias)) {
  3. return function(url) {
  4. return url
  5. };
  6. }
  7. alias = Object.keys(alias).map(function(key) {
  8. var onlyModule = false;
  9. var obj = alias[key];
  10. if(/\$$/.test(key)) {
  11. onlyModule = true;
  12. key = key.substr(0, key.length - 1);
  13. }
  14. if(typeof obj === "string") {
  15. obj = {
  16. alias: obj
  17. };
  18. }
  19. obj = Object.assign({
  20. name: key,
  21. onlyModule: onlyModule
  22. }, obj);
  23. return obj;
  24. });
  25. return function(url) {
  26. alias.forEach(function(obj) {
  27. var name = obj.name;
  28. if(url === name || (!obj.onlyModule && url.startsWith(name + "/"))) {
  29. url = obj.alias + url.substr(name.length);
  30. }
  31. });
  32. return url;
  33. }
  34. }