transform-custom-require.js 730 B

12345678910111213141516171819202122232425262728293031323334
  1. "use strict";
  2. //
  3. // BEFORE:
  4. // $$$r("path/to/file")
  5. //
  6. // AFTER:
  7. // require("./file")
  8. //
  9. module.exports = function(babel) {
  10. const t = babel.types;
  11. return {
  12. visitor: {
  13. CallExpression: function(path) {
  14. const node = path.node;
  15. if (
  16. path.get("callee").isIdentifier({ name: "$$$r" }) &&
  17. node.arguments.length === 1 &&
  18. path.get("arguments.0").isStringLiteral()
  19. ) {
  20. const value = node.arguments[0].value;
  21. const parts = value.split("/");
  22. path.replaceWith(
  23. t.callExpression(t.identifier("require"), [
  24. t.stringLiteral(`./${parts[parts.length - 1]}`)
  25. ])
  26. );
  27. }
  28. }
  29. }
  30. };
  31. };