Skip to content

Commit

Permalink
tools: import rather than require ESLint plugins
Browse files Browse the repository at this point in the history
Refs: #57314
PR-URL: #57315
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Edy Silva <[email protected]>
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
  • Loading branch information
targos authored Mar 7, 2025
1 parent 9325697 commit 27f98c3
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 20 deletions.
4 changes: 1 addition & 3 deletions benchmark/eslint.config_partial.mjs
Original file line number Diff line number Diff line change
@@ -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 [
{
Expand Down
4 changes: 1 addition & 3 deletions doc/eslint.config_partial.mjs
Original file line number Diff line number Diff line change
@@ -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}'],
Expand Down
12 changes: 6 additions & 6 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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));

Expand Down
4 changes: 1 addition & 3 deletions test/eslint.config_partial.mjs
Original file line number Diff line number Diff line change
@@ -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}'],
Expand Down
4 changes: 1 addition & 3 deletions tools/eslint/eslint.config_partial.mjs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import { requireEslintTool } from './eslint.config_utils.mjs';

const globals = requireEslintTool('globals');
import { globals } from './eslint.config_utils.mjs';

export default [
{
Expand Down
8 changes: 6 additions & 2 deletions tools/eslint/eslint.config_utils.mjs
Original file line number Diff line number Diff line change
@@ -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 = [
{
Expand Down

0 comments on commit 27f98c3

Please sign in to comment.