rsnext/packages/eslint-plugin-next/lib/rules/no-sync-scripts.js
Houssein Djirdeh bbc28ccae0
next lint + ESLint in Create Next App (#25064)
Co-authored-by: Tim Neutkens <tim@timneutkens.nl>
Co-authored-by: Tim Neutkens <timneutkens@me.com>
2021-06-03 14:01:24 +02:00

28 lines
732 B
JavaScript

module.exports = function (context) {
return {
JSXOpeningElement(node) {
if (node.name.name !== 'script') {
return
}
if (node.attributes.length === 0) {
return
}
const attributeNames = node.attributes
.filter((attr) => attr.type === 'JSXAttribute')
.map((attr) => attr.name.name)
if (
attributeNames.includes('src') &&
!attributeNames.includes('async') &&
!attributeNames.includes('defer')
) {
context.report({
node,
message:
'External synchronous scripts are forbidden. See: https://nextjs.org/docs/messages/no-sync-scripts.',
})
}
},
}
}
module.exports.schema = []