diff --git a/packages/eslint-plugin-next/.swcrc b/packages/eslint-plugin-next/.swcrc
new file mode 100644
index 0000000000000..03874f5c178ff
--- /dev/null
+++ b/packages/eslint-plugin-next/.swcrc
@@ -0,0 +1,11 @@
+{
+ "$schema": "https://json.schemastore.org/swcrc",
+ "jsc": {
+ "parser": {
+ "syntax": "typescript"
+ }
+ },
+ "module": {
+ "type": "commonjs"
+ }
+}
\ No newline at end of file
diff --git a/packages/eslint-plugin-next/lib/rules/no-img-element.js b/packages/eslint-plugin-next/lib/rules/no-img-element.js
deleted file mode 100644
index 7d071ef86792f..0000000000000
--- a/packages/eslint-plugin-next/lib/rules/no-img-element.js
+++ /dev/null
@@ -1,43 +0,0 @@
-const url = 'https://nextjs.org/docs/messages/no-img-element'
-
-module.exports = {
- meta: {
- docs: {
- description: 'Prevent usage of `
` element to prevent layout shift.',
- category: 'HTML',
- recommended: true,
- url,
- },
- type: 'problem',
- schema: [],
- },
-
- create: function (context) {
- return {
- JSXOpeningElement(node) {
- if (node.name.name !== 'img') {
- return
- }
-
- if (node.attributes.length === 0) {
- return
- }
-
- if (
- node.parent &&
- node.parent.openingElement &&
- node.parent.parent.openingElement &&
- node.parent.parent.openingElement.name &&
- node.parent.parent.openingElement.name.name === 'picture'
- ) {
- return
- }
-
- context.report({
- node,
- message: `Do not use \`
\` element. Use \`\` from \`next/image\` instead. See: ${url}`,
- })
- },
- }
- },
-}
diff --git a/packages/eslint-plugin-next/package.json b/packages/eslint-plugin-next/package.json
index 71927094482dd..151c2001186bf 100644
--- a/packages/eslint-plugin-next/package.json
+++ b/packages/eslint-plugin-next/package.json
@@ -2,19 +2,23 @@
"name": "@next/eslint-plugin-next",
"version": "12.3.2-canary.15",
"description": "ESLint plugin for NextJS.",
- "main": "lib/index.js",
+ "main": "dist/index.js",
"license": "MIT",
"repository": {
"url": "vercel/next.js",
"directory": "packages/eslint-plugin-next"
},
"files": [
- "lib"
+ "dist"
],
"dependencies": {
"glob": "7.1.7"
},
"devDependencies": {
- "@types/eslint": "7.28.0"
+ "eslint": "7.24.0"
+ },
+ "scripts": {
+ "build": "swc -d dist src",
+ "prepublishOnly": "cd ../../ && turbo run build"
}
}
diff --git a/packages/eslint-plugin-next/lib/index.js b/packages/eslint-plugin-next/src/index.ts
similarity index 100%
rename from packages/eslint-plugin-next/lib/index.js
rename to packages/eslint-plugin-next/src/index.ts
diff --git a/packages/eslint-plugin-next/lib/rules/google-font-display.js b/packages/eslint-plugin-next/src/rules/google-font-display.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/google-font-display.js
rename to packages/eslint-plugin-next/src/rules/google-font-display.js
diff --git a/packages/eslint-plugin-next/lib/rules/google-font-preconnect.js b/packages/eslint-plugin-next/src/rules/google-font-preconnect.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/google-font-preconnect.js
rename to packages/eslint-plugin-next/src/rules/google-font-preconnect.js
diff --git a/packages/eslint-plugin-next/lib/rules/inline-script-id.js b/packages/eslint-plugin-next/src/rules/inline-script-id.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/inline-script-id.js
rename to packages/eslint-plugin-next/src/rules/inline-script-id.js
diff --git a/packages/eslint-plugin-next/lib/rules/next-script-for-ga.js b/packages/eslint-plugin-next/src/rules/next-script-for-ga.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/next-script-for-ga.js
rename to packages/eslint-plugin-next/src/rules/next-script-for-ga.js
diff --git a/packages/eslint-plugin-next/lib/rules/no-assign-module-variable.js b/packages/eslint-plugin-next/src/rules/no-assign-module-variable.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-assign-module-variable.js
rename to packages/eslint-plugin-next/src/rules/no-assign-module-variable.js
diff --git a/packages/eslint-plugin-next/lib/rules/no-before-interactive-script-outside-document.js b/packages/eslint-plugin-next/src/rules/no-before-interactive-script-outside-document.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-before-interactive-script-outside-document.js
rename to packages/eslint-plugin-next/src/rules/no-before-interactive-script-outside-document.js
diff --git a/packages/eslint-plugin-next/lib/rules/no-css-tags.js b/packages/eslint-plugin-next/src/rules/no-css-tags.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-css-tags.js
rename to packages/eslint-plugin-next/src/rules/no-css-tags.js
diff --git a/packages/eslint-plugin-next/lib/rules/no-document-import-in-page.js b/packages/eslint-plugin-next/src/rules/no-document-import-in-page.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-document-import-in-page.js
rename to packages/eslint-plugin-next/src/rules/no-document-import-in-page.js
diff --git a/packages/eslint-plugin-next/lib/rules/no-duplicate-head.js b/packages/eslint-plugin-next/src/rules/no-duplicate-head.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-duplicate-head.js
rename to packages/eslint-plugin-next/src/rules/no-duplicate-head.js
diff --git a/packages/eslint-plugin-next/lib/rules/no-head-element.js b/packages/eslint-plugin-next/src/rules/no-head-element.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-head-element.js
rename to packages/eslint-plugin-next/src/rules/no-head-element.js
diff --git a/packages/eslint-plugin-next/lib/rules/no-head-import-in-document.js b/packages/eslint-plugin-next/src/rules/no-head-import-in-document.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-head-import-in-document.js
rename to packages/eslint-plugin-next/src/rules/no-head-import-in-document.js
diff --git a/packages/eslint-plugin-next/lib/rules/no-html-link-for-pages.js b/packages/eslint-plugin-next/src/rules/no-html-link-for-pages.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-html-link-for-pages.js
rename to packages/eslint-plugin-next/src/rules/no-html-link-for-pages.js
diff --git a/packages/eslint-plugin-next/src/rules/no-img-element.ts b/packages/eslint-plugin-next/src/rules/no-img-element.ts
new file mode 100644
index 0000000000000..baea84b669b93
--- /dev/null
+++ b/packages/eslint-plugin-next/src/rules/no-img-element.ts
@@ -0,0 +1,37 @@
+import type { Rule } from 'eslint'
+
+const url = 'https://nextjs.org/docs/messages/no-img-element'
+
+export const meta: Rule.RuleMetaData = {
+ docs: {
+ description: 'Prevent usage of `
` element to prevent layout shift.',
+ category: 'HTML',
+ recommended: true,
+ url,
+ },
+ type: 'problem',
+ schema: [],
+}
+
+export const create: Rule.RuleModule['create'] = (context) => {
+ return {
+ JSXOpeningElement(node) {
+ if (node.name.name !== 'img') {
+ return
+ }
+
+ if (node.attributes.length === 0) {
+ return
+ }
+
+ if (node.parent?.parent?.openingElement?.name?.name === 'picture') {
+ return
+ }
+
+ context.report({
+ node,
+ message: `Do not use \`
\` element. Use \`\` from \`next/image\` instead. See: ${url}`,
+ })
+ },
+ }
+}
diff --git a/packages/eslint-plugin-next/lib/rules/no-page-custom-font.js b/packages/eslint-plugin-next/src/rules/no-page-custom-font.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-page-custom-font.js
rename to packages/eslint-plugin-next/src/rules/no-page-custom-font.js
diff --git a/packages/eslint-plugin-next/lib/rules/no-script-component-in-head.js b/packages/eslint-plugin-next/src/rules/no-script-component-in-head.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-script-component-in-head.js
rename to packages/eslint-plugin-next/src/rules/no-script-component-in-head.js
diff --git a/packages/eslint-plugin-next/lib/rules/no-styled-jsx-in-document.js b/packages/eslint-plugin-next/src/rules/no-styled-jsx-in-document.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-styled-jsx-in-document.js
rename to packages/eslint-plugin-next/src/rules/no-styled-jsx-in-document.js
diff --git a/packages/eslint-plugin-next/lib/rules/no-sync-scripts.js b/packages/eslint-plugin-next/src/rules/no-sync-scripts.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-sync-scripts.js
rename to packages/eslint-plugin-next/src/rules/no-sync-scripts.js
diff --git a/packages/eslint-plugin-next/lib/rules/no-title-in-document-head.js b/packages/eslint-plugin-next/src/rules/no-title-in-document-head.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-title-in-document-head.js
rename to packages/eslint-plugin-next/src/rules/no-title-in-document-head.js
diff --git a/packages/eslint-plugin-next/lib/rules/no-typos.js b/packages/eslint-plugin-next/src/rules/no-typos.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-typos.js
rename to packages/eslint-plugin-next/src/rules/no-typos.js
diff --git a/packages/eslint-plugin-next/lib/rules/no-unwanted-polyfillio.js b/packages/eslint-plugin-next/src/rules/no-unwanted-polyfillio.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/rules/no-unwanted-polyfillio.js
rename to packages/eslint-plugin-next/src/rules/no-unwanted-polyfillio.js
diff --git a/packages/eslint-plugin-next/lib/utils/get-root-dirs.js b/packages/eslint-plugin-next/src/utils/get-root-dirs.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/utils/get-root-dirs.js
rename to packages/eslint-plugin-next/src/utils/get-root-dirs.js
diff --git a/packages/eslint-plugin-next/lib/utils/node-attributes.js b/packages/eslint-plugin-next/src/utils/node-attributes.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/utils/node-attributes.js
rename to packages/eslint-plugin-next/src/utils/node-attributes.js
diff --git a/packages/eslint-plugin-next/lib/utils/url.js b/packages/eslint-plugin-next/src/utils/url.js
similarity index 100%
rename from packages/eslint-plugin-next/lib/utils/url.js
rename to packages/eslint-plugin-next/src/utils/url.js
diff --git a/packages/eslint-plugin-next/jsconfig.json b/packages/eslint-plugin-next/tsconfig.json
similarity index 80%
rename from packages/eslint-plugin-next/jsconfig.json
rename to packages/eslint-plugin-next/tsconfig.json
index e4468a2aee6de..ed9206798a9e8 100644
--- a/packages/eslint-plugin-next/jsconfig.json
+++ b/packages/eslint-plugin-next/tsconfig.json
@@ -3,5 +3,6 @@
"module": "commonjs",
"target": "es2019"
},
+ "include": ["src/**/*"],
"exclude": ["node_modules"]
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7f2c4f40f6888..797d1ff47e3b5 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -419,12 +419,12 @@ importers:
packages/eslint-plugin-next:
specifiers:
- '@types/eslint': 7.28.0
+ eslint: 7.24.0
glob: 7.1.7
dependencies:
glob: 7.1.7
devDependencies:
- '@types/eslint': 7.28.0
+ eslint: 7.24.0
packages/font:
specifiers: {}
diff --git a/test/unit/eslint-plugin-next/google-font-display.test.ts b/test/unit/eslint-plugin-next/google-font-display.test.ts
index 8754fc526c1a5..d52ec9a831d71 100644
--- a/test/unit/eslint-plugin-next/google-font-display.test.ts
+++ b/test/unit/eslint-plugin-next/google-font-display.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/google-font-display'
+import rule from '@next/eslint-plugin-next/dist/rules/google-font-display'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/google-font-preconnect.test.ts b/test/unit/eslint-plugin-next/google-font-preconnect.test.ts
index d5bbbc717335a..33578d20a360b 100644
--- a/test/unit/eslint-plugin-next/google-font-preconnect.test.ts
+++ b/test/unit/eslint-plugin-next/google-font-preconnect.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/google-font-preconnect'
+import rule from '@next/eslint-plugin-next/dist/rules/google-font-preconnect'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/index.test.ts b/test/unit/eslint-plugin-next/index.test.ts
index 394d2a37485b6..f795293f0b353 100644
--- a/test/unit/eslint-plugin-next/index.test.ts
+++ b/test/unit/eslint-plugin-next/index.test.ts
@@ -3,7 +3,7 @@ import glob from 'glob'
import index from '@next/eslint-plugin-next'
const getRuleNameFromRulePath = (path) => basename(path, '.js')
-const rulePaths = glob.sync('packages/eslint-plugin-next/lib/rules/*js', {
+const rulePaths = glob.sync('packages/eslint-plugin-next/dist/rules/*js', {
absolute: true,
})
@@ -15,7 +15,8 @@ describe('@next/eslint-plugin-next index', () => {
})
rulePaths.forEach((rulePath) => {
- const rule = require(rulePath)
+ let rule = require(rulePath)
+ rule = rule.default ?? rule
const ruleName = getRuleNameFromRulePath(rulePath)
const { recommended = false } = rule.meta.docs
diff --git a/test/unit/eslint-plugin-next/inline-script-id.test.ts b/test/unit/eslint-plugin-next/inline-script-id.test.ts
index 569f258ef78f5..fc3fb9e9fe397 100644
--- a/test/unit/eslint-plugin-next/inline-script-id.test.ts
+++ b/test/unit/eslint-plugin-next/inline-script-id.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/inline-script-id'
+import rule from '@next/eslint-plugin-next/dist/rules/inline-script-id'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/next-script-for-ga.test.ts b/test/unit/eslint-plugin-next/next-script-for-ga.test.ts
index cee8ceb4a092e..709042a0fbc13 100644
--- a/test/unit/eslint-plugin-next/next-script-for-ga.test.ts
+++ b/test/unit/eslint-plugin-next/next-script-for-ga.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/next-script-for-ga'
+import rule from '@next/eslint-plugin-next/dist/rules/next-script-for-ga'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-assign-module-variable.test.ts b/test/unit/eslint-plugin-next/no-assign-module-variable.test.ts
index a81b2eca64c36..7b93ae0d399bd 100644
--- a/test/unit/eslint-plugin-next/no-assign-module-variable.test.ts
+++ b/test/unit/eslint-plugin-next/no-assign-module-variable.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/no-assign-module-variable'
+import rule from '@next/eslint-plugin-next/dist/rules/no-assign-module-variable'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-before-interactive-script-outside-document.test.ts b/test/unit/eslint-plugin-next/no-before-interactive-script-outside-document.test.ts
index 48789a3e237e3..6b6fec463c32f 100644
--- a/test/unit/eslint-plugin-next/no-before-interactive-script-outside-document.test.ts
+++ b/test/unit/eslint-plugin-next/no-before-interactive-script-outside-document.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/no-before-interactive-script-outside-document'
+import rule from '@next/eslint-plugin-next/dist/rules/no-before-interactive-script-outside-document'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-css-tags.test.ts b/test/unit/eslint-plugin-next/no-css-tags.test.ts
index 4dd04ea80514c..127bb6b5c148c 100644
--- a/test/unit/eslint-plugin-next/no-css-tags.test.ts
+++ b/test/unit/eslint-plugin-next/no-css-tags.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/no-css-tags'
+import rule from '@next/eslint-plugin-next/dist/rules/no-css-tags'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-document-import-in-page.test.ts b/test/unit/eslint-plugin-next/no-document-import-in-page.test.ts
index ad98e079309c6..f09edd3a9240a 100644
--- a/test/unit/eslint-plugin-next/no-document-import-in-page.test.ts
+++ b/test/unit/eslint-plugin-next/no-document-import-in-page.test.ts
@@ -1,6 +1,6 @@
import path from 'path'
-import rule from '@next/eslint-plugin-next/lib/rules/no-document-import-in-page'
+import rule from '@next/eslint-plugin-next/dist/rules/no-document-import-in-page'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-duplicate-head.test.ts b/test/unit/eslint-plugin-next/no-duplicate-head.test.ts
index c859e8029136d..c25b6071d5dc4 100644
--- a/test/unit/eslint-plugin-next/no-duplicate-head.test.ts
+++ b/test/unit/eslint-plugin-next/no-duplicate-head.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/no-duplicate-head'
+import rule from '@next/eslint-plugin-next/dist/rules/no-duplicate-head'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-head-element.test.ts b/test/unit/eslint-plugin-next/no-head-element.test.ts
index 1804abd9a8f50..9ce756197a900 100644
--- a/test/unit/eslint-plugin-next/no-head-element.test.ts
+++ b/test/unit/eslint-plugin-next/no-head-element.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/no-head-element'
+import rule from '@next/eslint-plugin-next/dist/rules/no-head-element'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-head-import-in-document.test.ts b/test/unit/eslint-plugin-next/no-head-import-in-document.test.ts
index 4bcaed90b7a3a..21affc36f2003 100644
--- a/test/unit/eslint-plugin-next/no-head-import-in-document.test.ts
+++ b/test/unit/eslint-plugin-next/no-head-import-in-document.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/no-head-import-in-document'
+import rule from '@next/eslint-plugin-next/dist/rules/no-head-import-in-document'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-html-link-for-pages.test.ts b/test/unit/eslint-plugin-next/no-html-link-for-pages.test.ts
index e5aa38beecb17..0f2c0f629713e 100644
--- a/test/unit/eslint-plugin-next/no-html-link-for-pages.test.ts
+++ b/test/unit/eslint-plugin-next/no-html-link-for-pages.test.ts
@@ -1,5 +1,5 @@
/* eslint-env jest */
-import rule from '@next/eslint-plugin-next/lib/rules/no-html-link-for-pages'
+import rule from '@next/eslint-plugin-next/dist/rules/no-html-link-for-pages'
import { Linter } from 'eslint'
import assert from 'assert'
import path from 'path'
diff --git a/test/unit/eslint-plugin-next/no-img-element.test.ts b/test/unit/eslint-plugin-next/no-img-element.test.ts
index 18efcff88a4da..1349524709dfb 100644
--- a/test/unit/eslint-plugin-next/no-img-element.test.ts
+++ b/test/unit/eslint-plugin-next/no-img-element.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/no-img-element'
+import * as rule from '@next/eslint-plugin-next/dist/rules/no-img-element'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-page-custom-font.test.ts b/test/unit/eslint-plugin-next/no-page-custom-font.test.ts
index 8e2a5623c8ca0..c9548d8090619 100644
--- a/test/unit/eslint-plugin-next/no-page-custom-font.test.ts
+++ b/test/unit/eslint-plugin-next/no-page-custom-font.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/no-page-custom-font'
+import rule from '@next/eslint-plugin-next/dist/rules/no-page-custom-font'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-script-component-in-head.test.ts b/test/unit/eslint-plugin-next/no-script-component-in-head.test.ts
index c4ae01685660b..ba0aece3e727f 100644
--- a/test/unit/eslint-plugin-next/no-script-component-in-head.test.ts
+++ b/test/unit/eslint-plugin-next/no-script-component-in-head.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/no-script-component-in-head'
+import rule from '@next/eslint-plugin-next/dist/rules/no-script-component-in-head'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-styled-jsx-in-document.test.ts b/test/unit/eslint-plugin-next/no-styled-jsx-in-document.test.ts
index 5a91d5f0bafd1..94382c61507b7 100644
--- a/test/unit/eslint-plugin-next/no-styled-jsx-in-document.test.ts
+++ b/test/unit/eslint-plugin-next/no-styled-jsx-in-document.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/no-styled-jsx-in-document'
+import rule from '@next/eslint-plugin-next/dist/rules/no-styled-jsx-in-document'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-sync-scripts.test.ts b/test/unit/eslint-plugin-next/no-sync-scripts.test.ts
index 90d4267efa8cf..08203108f93d5 100644
--- a/test/unit/eslint-plugin-next/no-sync-scripts.test.ts
+++ b/test/unit/eslint-plugin-next/no-sync-scripts.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/no-sync-scripts'
+import rule from '@next/eslint-plugin-next/dist/rules/no-sync-scripts'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-title-in-document-head.test.ts b/test/unit/eslint-plugin-next/no-title-in-document-head.test.ts
index 8877d0c1343df..6644fe4a85d9d 100644
--- a/test/unit/eslint-plugin-next/no-title-in-document-head.test.ts
+++ b/test/unit/eslint-plugin-next/no-title-in-document-head.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/no-title-in-document-head'
+import rule from '@next/eslint-plugin-next/dist/rules/no-title-in-document-head'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-typos.test.ts b/test/unit/eslint-plugin-next/no-typos.test.ts
index ee8a26b2313a5..89bcaf1602af5 100644
--- a/test/unit/eslint-plugin-next/no-typos.test.ts
+++ b/test/unit/eslint-plugin-next/no-typos.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/no-typos'
+import rule from '@next/eslint-plugin-next/dist/rules/no-typos'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {
diff --git a/test/unit/eslint-plugin-next/no-unwanted-polyfillio.test.ts b/test/unit/eslint-plugin-next/no-unwanted-polyfillio.test.ts
index 7283183736c42..f1383c2f67d9c 100644
--- a/test/unit/eslint-plugin-next/no-unwanted-polyfillio.test.ts
+++ b/test/unit/eslint-plugin-next/no-unwanted-polyfillio.test.ts
@@ -1,4 +1,4 @@
-import rule from '@next/eslint-plugin-next/lib/rules/no-unwanted-polyfillio'
+import rule from '@next/eslint-plugin-next/dist/rules/no-unwanted-polyfillio'
import { RuleTester } from 'eslint'
;(RuleTester as any).setDefaultConfig({
parserOptions: {