Path: blob/main/src/rules/no-dynamic-require.js
829 views
import docsUrl from '../docsUrl';12function isRequire(node) {3return node &&4node.callee &&5node.callee.type === 'Identifier' &&6node.callee.name === 'require' &&7node.arguments.length >= 1;8}910function isDynamicImport(node) {11return node &&12node.callee &&13node.callee.type === 'Import';14}1516function isStaticValue(arg) {17return arg.type === 'Literal' ||18(arg.type === 'TemplateLiteral' && arg.expressions.length === 0);19}2021module.exports = {22meta: {23type: 'suggestion',24docs: {25url: docsUrl('no-dynamic-require'),26},27schema: [28{29type: 'object',30properties: {31esmodule: {32type: 'boolean',33},34},35additionalProperties: false,36},37],38},3940create(context) {41const options = context.options[0] || {};4243return {44CallExpression(node) {45if (!node.arguments[0] || isStaticValue(node.arguments[0])) {46return;47}48if (isRequire(node)) {49return context.report({50node,51message: 'Calls to require() should use string literals',52});53}54if (options.esmodule && isDynamicImport(node)) {55return context.report({56node,57message: 'Calls to import() should use string literals',58});59}60},61};62},63};646566