// Babel plugin that adds CACHE_BUST_COMMENT to every function body. const CACHE_BUST_COMMENT = "ThouShaltNotCache"; export default function({ types: t }) { return { visitor: { Function(path) { const bodyPath = path.get("body"); // Handle arrow functions: () => "value" // Convert them to block statements: () => { return "value"; } if (!bodyPath.isBlockStatement()) { const newBody = t.blockStatement([t.returnStatement(bodyPath.node)]); path.set("body", newBody); } // Handle empty function bodies: function foo() {} // Add an empty statement so we have a first node to attach the comment to. if (path.get("body.body").length === 0) { path.get("body").pushContainer("body", t.emptyStatement()); } const firstNode = path.node.body.body[0]; t.addComment(firstNode, "leading", CACHE_BUST_COMMENT); }, }, }; };