Remove 'esquery' hack to potentially enable Turbopack (#8115)

* Remove esquery hack

* Add comment explaining next.config change
This commit is contained in:
Joshua Comeau
2025-11-01 00:11:49 -04:00
committed by GitHub
parent e57e912285
commit f9e2c13967
2 changed files with 8 additions and 7 deletions

View File

@@ -36,6 +36,14 @@ const nextConfig = {
// Don't bundle the shim unnecessarily.
config.resolve.alias['use-sync-external-store/shim'] = 'react';
// ESLint depends on the CommonJS version of esquery,
// but Webpack loads the ESM version by default. This
// alias ensures the correct version is used.
//
// More info:
// https://github.com/reactjs/react.dev/pull/8115
config.resolve.alias['esquery'] = 'esquery/dist/esquery.min.js';
const {IgnorePlugin, NormalModuleReplacementPlugin} = require('webpack');
config.plugins.push(
new NormalModuleReplacementPlugin(

View File

@@ -21,13 +21,6 @@ const getCodeMirrorPosition = (
const linter = new Linter();
// HACK! Eslint requires 'esquery' using `require`, but there's no commonjs interop.
// because of this it tries to run `esquery.parse()`, while there's only `esquery.default.parse()`.
// This hack places the functions in the right place.
const esquery = require('esquery');
esquery.parse = esquery.default?.parse;
esquery.matches = esquery.default?.matches;
const reactRules = require('eslint-plugin-react-hooks').rules;
linter.defineRules({
'react-hooks/rules-of-hooks': reactRules['rules-of-hooks'],