From 4079a4c1e53f40a61b96a23bfb5462f8bbea885b Mon Sep 17 00:00:00 2001 From: Gregor Martynus <39992+gr2m@users.noreply.github.com> Date: Sat, 14 Jan 2023 13:49:42 -0800 Subject: [PATCH] fix: handle import of ESM plugins Co-authored-by: Matt Travi --- lib/plugins/utils.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/plugins/utils.js b/lib/plugins/utils.js index dbc892d8a2..addc8d1e2d 100644 --- a/lib/plugins/utils.js +++ b/lib/plugins/utils.js @@ -52,14 +52,18 @@ export async function loadPlugin({cwd}, name, pluginsPath) { ? dirname(resolveFrom.silent(__dirname, pluginsPath[name]) || resolveFrom(cwd, pluginsPath[name])) : __dirname; - if (!isFunction(name)) { - const file = resolveFrom.silent(basePath, name) || resolveFrom(cwd, name); - // See https://github.com/mysticatea/eslint-plugin-node/issues/250 - // eslint-disable-next-line node/no-unsupported-features/es-syntax - name = (await import(`file://${file}`)).default; + if (isFunction(name)) { + return name; } - return name; + const file = resolveFrom.silent(basePath, name) || resolveFrom(cwd, name); + const { default: cjsExport, ...esmNamedExports } = await import(`file://${file}`); + + if (cjsExport) { + return cjsExport; + } + + return esmNamedExports; } export function parseConfig(plugin) {