buildPluginReplace.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.createReplacePlugin = void 0;
  7. const magic_string_1 = __importDefault(require("magic-string"));
  8. exports.createReplacePlugin = (test, replacements, sourcemap) => {
  9. const pattern = new RegExp('\\b(' +
  10. Object.keys(replacements)
  11. .map((str) => {
  12. return str.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&');
  13. })
  14. .join('|') +
  15. ')\\b', 'g');
  16. return {
  17. name: 'vite:replace',
  18. transform(code, id) {
  19. if (test(id)) {
  20. const s = new magic_string_1.default(code);
  21. let hasReplaced = false;
  22. let match;
  23. while ((match = pattern.exec(code))) {
  24. hasReplaced = true;
  25. const start = match.index;
  26. const end = start + match[0].length;
  27. const replacement = '' + replacements[match[1]];
  28. s.overwrite(start, end, replacement);
  29. }
  30. if (!hasReplaced) {
  31. return null;
  32. }
  33. const result = { code: s.toString() };
  34. if (sourcemap) {
  35. result.map = s.generateMap({ hires: true });
  36. }
  37. return result;
  38. }
  39. }
  40. };
  41. };
  42. //# sourceMappingURL=buildPluginReplace.js.map