From 664adc4bb79da02f7687212d0db7fd34ba53f226 Mon Sep 17 00:00:00 2001 From: Katsuma Ito Date: Thu, 9 Sep 2021 11:35:26 +0900 Subject: [PATCH] [ESLint Plugin] Add `next/script` support for `no-unwanted-polyfillio` rule --- .../lib/rules/no-unwanted-polyfillio.js | 16 +++++++++- .../no-unwanted-polyfillio.test.ts | 29 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin-next/lib/rules/no-unwanted-polyfillio.js b/packages/eslint-plugin-next/lib/rules/no-unwanted-polyfillio.js index fa83aba9523b3b..3ea29be4ebcefe 100644 --- a/packages/eslint-plugin-next/lib/rules/no-unwanted-polyfillio.js +++ b/packages/eslint-plugin-next/lib/rules/no-unwanted-polyfillio.js @@ -74,8 +74,22 @@ module.exports = { }, create: function (context) { + let scriptImport = null + return { - 'JSXOpeningElement[name.name=script][attributes.length>0]'(node) { + ImportDeclaration(node) { + if (node.source.value === 'next/script') { + scriptImport = node.specifiers[0].local.name + } + }, + JSXOpeningElement(node) { + if (node.name.name !== 'script' && node.name.name !== scriptImport) { + return + } + if (node.attributes.length === 0) { + return + } + const srcNode = node.attributes.find( (attr) => attr.type === 'JSXAttribute' && attr.name.name === 'src' ) 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 f8c57f42bb19b4..4c2996d55ebbd9 100644 --- a/test/unit/eslint-plugin-next/no-unwanted-polyfillio.test.ts +++ b/test/unit/eslint-plugin-next/no-unwanted-polyfillio.test.ts @@ -38,6 +38,16 @@ ruleTester.run('unwanted-polyfillsio', rule, { ); } }`, + `import Script from 'next/script'; + + export function MyApp({ Component, pageProps }) { + return ( +
+ +