From 8c00ad44df8ae44767acefebc558a0cde15d03d4 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Mon, 20 Jul 2020 18:35:28 +0800 Subject: [PATCH] Build: Simplify `transform-custom-require` plugin (#8735) --- .../babel-plugins/transform-custom-require.js | 47 +++---------------- src/common/resolve.js | 4 +- 2 files changed, 8 insertions(+), 43 deletions(-) diff --git a/scripts/build/babel-plugins/transform-custom-require.js b/scripts/build/babel-plugins/transform-custom-require.js index 2092bcc69..b15d8ce90 100644 --- a/scripts/build/babel-plugins/transform-custom-require.js +++ b/scripts/build/babel-plugins/transform-custom-require.js @@ -1,16 +1,6 @@ "use strict"; -// -// BEFORE: -// eval("require")("./path/to/file") -// eval("require")(identifier) -// eval("require").cache -// -// AFTER: -// require("./file") -// require(identifier) -// require.cache -// +// `eval("require")` -> `require` module.exports = function (babel) { const t = babel.types; @@ -19,37 +9,14 @@ module.exports = function (babel) { visitor: { CallExpression(path) { const { node } = path; - if (isEvalRequire(node.callee) && node.arguments.length === 1) { - let arg = node.arguments[0]; - if (t.isLiteral(arg) && arg.value.startsWith(".")) { - const value = "." + arg.value.slice(arg.value.lastIndexOf("/")); - arg = t.stringLiteral(value); - } - path.replaceWith(t.callExpression(t.identifier("require"), [arg])); - } - }, - MemberExpression(path) { - const { node } = path; - if (isEvalRequire(node.object)) { - path.replaceWith( - t.memberExpression( - t.identifier("require"), - node.property, - node.compute, - node.optional - ) - ); + if ( + t.isIdentifier(node.callee, { name: "eval" }) && + node.arguments.length === 1 && + t.isLiteral(node.arguments[0], { value: "require" }) + ) { + path.replaceWith(t.identifier("require")); } }, }, }; - - function isEvalRequire(node) { - return ( - t.isCallExpression(node) && - t.isIdentifier(node.callee, { name: "eval" }) && - node.arguments.length === 1 && - t.isLiteral(node.arguments[0], { value: "require" }) - ); - } }; diff --git a/src/common/resolve.js b/src/common/resolve.js index f413d1cae..320ef12a4 100644 --- a/src/common/resolve.js +++ b/src/common/resolve.js @@ -1,8 +1,6 @@ "use strict"; -// `/scripts/build/babel-plugins/transform-custom-require.js` doesn't support destructuring. -// eslint-disable-next-line prefer-destructuring -let resolve = eval("require").resolve; +let { resolve } = eval("require"); // In the VS Code and Atom extensions `require` is overridden and `require.resolve` doesn't support the 2nd argument. if (resolve.length === 1 || process.env.PRETTIER_FALLBACK_RESOLVE) {