From 8e64d38e9128077bd9c7b29a42a5c65b87534eff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Fri, 7 Mar 2025 15:52:52 +0100 Subject: [PATCH] tools: import rather than require ESLint plugins Refs: https://github.com/nodejs/node/pull/57314 PR-URL: https://github.com/nodejs/node/pull/57315 Reviewed-By: Colin Ihrig Reviewed-By: James M Snell Reviewed-By: Edy Silva Reviewed-By: Joyee Cheung Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca Reviewed-By: Yagiz Nizipli Reviewed-By: Rafael Gonzaga --- benchmark/eslint.config_partial.mjs | 4 +--- doc/eslint.config_partial.mjs | 4 +--- eslint.config.mjs | 12 ++++++------ test/eslint.config_partial.mjs | 4 +--- tools/eslint/eslint.config_partial.mjs | 4 +--- tools/eslint/eslint.config_utils.mjs | 8 ++++++-- 6 files changed, 16 insertions(+), 20 deletions(-) diff --git a/benchmark/eslint.config_partial.mjs b/benchmark/eslint.config_partial.mjs index 174d8848c99..7f10460f719 100644 --- a/benchmark/eslint.config_partial.mjs +++ b/benchmark/eslint.config_partial.mjs @@ -1,6 +1,4 @@ -import { requireEslintTool } from '../tools/eslint/eslint.config_utils.mjs'; - -const globals = requireEslintTool('globals'); +import { globals } from '../tools/eslint/eslint.config_utils.mjs'; export default [ { diff --git a/doc/eslint.config_partial.mjs b/doc/eslint.config_partial.mjs index 609c38c26e9..ce914fbad1e 100644 --- a/doc/eslint.config_partial.mjs +++ b/doc/eslint.config_partial.mjs @@ -1,14 +1,12 @@ import { + globals, noRestrictedSyntaxCommonAll, noRestrictedSyntaxCommonLib, - requireEslintTool, } from '../tools/eslint/eslint.config_utils.mjs'; import { builtinModules } from 'node:module'; const builtin = builtinModules.filter((name) => !name.startsWith('node:')); -const globals = requireEslintTool('globals'); - export default [ { files: ['doc/**/*.md/*.{js,mjs,cjs}'], diff --git a/eslint.config.mjs b/eslint.config.mjs index 912d3265572..085f86174ff 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -7,20 +7,20 @@ import libConfig from './lib/eslint.config_partial.mjs'; import testConfig from './test/eslint.config_partial.mjs'; import toolsConfig from './tools/eslint/eslint.config_partial.mjs'; import { + importEslintTool, noRestrictedSyntaxCommonAll, noRestrictedSyntaxCommonLib, - requireEslintTool, resolveEslintTool, } from './tools/eslint/eslint.config_utils.mjs'; import nodeCore from './tools/eslint/eslint-plugin-node-core.js'; -const js = requireEslintTool('@eslint/js'); -const babelEslintParser = requireEslintTool('@babel/eslint-parser'); +const { default: js } = await importEslintTool('@eslint/js'); +const { default: babelEslintParser } = await importEslintTool('@babel/eslint-parser'); const babelPluginSyntaxImportAttributes = resolveEslintTool('@babel/plugin-syntax-import-attributes'); const babelPluginSyntaxImportSource = resolveEslintTool('@babel/plugin-syntax-import-source'); -const jsdoc = requireEslintTool('eslint-plugin-jsdoc'); -const markdown = requireEslintTool('eslint-plugin-markdown'); -const stylisticJs = requireEslintTool('@stylistic/eslint-plugin-js'); +const { default: jsdoc } = await importEslintTool('eslint-plugin-jsdoc'); +const { default: markdown } = await importEslintTool('eslint-plugin-markdown'); +const { default: stylisticJs } = await importEslintTool('@stylistic/eslint-plugin-js'); nodeCore.RULES_DIR = fileURLToPath(new URL('./tools/eslint-rules', import.meta.url)); diff --git a/test/eslint.config_partial.mjs b/test/eslint.config_partial.mjs index 8d9693d8872..417007ef68d 100644 --- a/test/eslint.config_partial.mjs +++ b/test/eslint.config_partial.mjs @@ -1,12 +1,10 @@ /* eslint-disable @stylistic/js/max-len */ import { + globals, noRestrictedSyntaxCommonAll, - requireEslintTool, } from '../tools/eslint/eslint.config_utils.mjs'; -const globals = requireEslintTool('globals'); - export default [ { files: ['test/**/*.{js,mjs,cjs}'], diff --git a/tools/eslint/eslint.config_partial.mjs b/tools/eslint/eslint.config_partial.mjs index c1f3087066a..0398d73a019 100644 --- a/tools/eslint/eslint.config_partial.mjs +++ b/tools/eslint/eslint.config_partial.mjs @@ -1,6 +1,4 @@ -import { requireEslintTool } from './eslint.config_utils.mjs'; - -const globals = requireEslintTool('globals'); +import { globals } from './eslint.config_utils.mjs'; export default [ { diff --git a/tools/eslint/eslint.config_utils.mjs b/tools/eslint/eslint.config_utils.mjs index 98d00b1ba1c..3e2b7d7c52e 100644 --- a/tools/eslint/eslint.config_utils.mjs +++ b/tools/eslint/eslint.config_utils.mjs @@ -1,7 +1,11 @@ import { createRequire } from 'node:module'; -export const requireEslintTool = createRequire(new URL(import.meta.url)); -export const resolveEslintTool = (request) => requireEslintTool.resolve(request); +export { default as globals } from 'globals'; + +export const importEslintTool = (specifier) => import(specifier); + +const localRequire = createRequire(new URL(import.meta.url)); +export const resolveEslintTool = (request) => localRequire.resolve(request); export const noRestrictedSyntaxCommonAll = [ {