我有一个实用函数,它为 JSON.stringify 添加了一些额外的错误处理。 eslint 中是否有一些规则可以限制全局函数,例如使用 ESLint 的 JSON.stringify 以及在 linting 后给出错误以使用我自己的实用程序函数?我怎样才能将其限制为仅 ts 和 tsx 文件?
我尝试使用无限制全局规则,但它没有解决问题,然后我使用无限制语法,看起来它可以工作,但我不确定如何使用它以及如何限制为仅ts 和 tsx
您可以编写自己的规则, 在 eslint-custom-rules 目录中,创建一个文件 no-json-stringify.js
module.exports = {
meta: {
type: 'problem',
docs: {
description: 'disallow usage of JSON.stringify and suggest using myUtilityFunction instead',
category: 'Best Practices',
recommended: false,
},
messages: {
avoidJSONStringify: 'Avoid using JSON.stringify. Use myUtilityFunction instead.',
},
schema: [], // no options
},
create(context) {
return {
CallExpression(node) {
if (
node.callee.type === 'MemberExpression' &&
node.callee.object.name === 'JSON' &&
node.callee.property.name === 'stringify'
) {
context.report({
node,
messageId: 'avoidJSONStringify',
});
}
},
};
},
};
更新 .eslintrc.js 文件:
将自定义规则添加到您的 ESLint 配置中
module.exports = {
// Other ESLint configuration options
plugins: [
'eslint-plugin-custom-rules', // Name of your custom rules plugin
],
rules: {
'custom-rules/no-json-stringify': 'error', // Enforce the custom rule
},
// Path to custom rules
settings: {
'import/resolver': {
node: {
paths: ['eslint-custom-rules'],
},
},
},
};
确保自定义规则能够被 ESLint 识别。如有必要,您可能需要配置插件加载,具体取决于您的项目设置。
希望这有帮助