From 95bdcb9be32c5417bb66447eef721fa6f33b940b Mon Sep 17 00:00:00 2001 From: Kara Erickson Date: Thu, 3 Feb 2022 17:38:58 -0800 Subject: [PATCH] Warn in dev mode when script tags are added with next/head This commit adds a development mode warning in the console if you try to include +
Home Page
+ + ) +} + +export default Home +``` + +### Useful Links + +- [Script component docs](https://nextjs.org/docs/basic-features/script/) diff --git a/packages/eslint-plugin-next/lib/index.js b/packages/eslint-plugin-next/lib/index.js index c5ef6936c09a712..295978b671b6fc4 100644 --- a/packages/eslint-plugin-next/lib/index.js +++ b/packages/eslint-plugin-next/lib/index.js @@ -14,7 +14,7 @@ module.exports = { 'no-document-import-in-page': require('./rules/no-document-import-in-page'), 'no-head-import-in-document': require('./rules/no-head-import-in-document'), 'no-script-in-document': require('./rules/no-script-in-document'), - 'no-script-in-head': require('./rules/no-script-in-head'), + 'no-script-component-in-head': require('./rules/no-script-component-in-head'), 'no-server-import-in-page': require('./rules/no-server-import-in-page'), 'no-typos': require('./rules/no-typos'), 'no-duplicate-head': require('./rules/no-duplicate-head'), @@ -40,7 +40,7 @@ module.exports = { '@next/next/no-document-import-in-page': 2, '@next/next/no-head-import-in-document': 2, '@next/next/no-script-in-document': 2, - '@next/next/no-script-in-head': 2, + '@next/next/no-script-component-in-head': 2, '@next/next/no-server-import-in-page': 2, '@next/next/no-typos': 1, '@next/next/no-duplicate-head': 2, diff --git a/packages/eslint-plugin-next/lib/rules/no-script-in-head.js b/packages/eslint-plugin-next/lib/rules/no-script-component-in-head.js similarity index 87% rename from packages/eslint-plugin-next/lib/rules/no-script-in-head.js rename to packages/eslint-plugin-next/lib/rules/no-script-component-in-head.js index 499832796c89dc5..8b9b1bdceee93ac 100644 --- a/packages/eslint-plugin-next/lib/rules/no-script-in-head.js +++ b/packages/eslint-plugin-next/lib/rules/no-script-component-in-head.js @@ -3,7 +3,7 @@ module.exports = { docs: { description: 'Disallow using next/script inside the next/head component', recommended: true, - url: 'https://nextjs.org/docs/messages/no-script-in-head-component', + url: 'https://nextjs.org/docs/messages/no-script-component-in-head-component', }, }, create: function (context) { @@ -43,7 +43,7 @@ module.exports = { context.report({ node, message: - "next/script shouldn't be used inside next/head. See: https://nextjs.org/docs/messages/no-script-in-head-component", + "next/script shouldn't be used inside next/head. See: https://nextjs.org/docs/messages/no-script-component-in-head-component ", }) } }, diff --git a/packages/next/shared/lib/head.tsx b/packages/next/shared/lib/head.tsx index 64c7764edfd1dfa..25bbac4b8711e14 100644 --- a/packages/next/shared/lib/head.tsx +++ b/packages/next/shared/lib/head.tsx @@ -161,6 +161,12 @@ function reduceComponents( return React.cloneElement(c, newProps) } } + // TODO(kara): warn for stylesheets as well as scripts + if (process.env.NODE_ENV === 'development' && c.type === 'script') { + console.warn( + `Do not add