有没有办法限制 JSON.stringify 与 ESLint 的使用,并在 linting 给出错误后使用我自己的实用函数?

问题描述 投票:0回答:1

我有一个实用函数,它为 JSON.stringify 添加了一些额外的错误处理。 eslint 中是否有一些规则可以限制全局函数,例如使用 ESLint 的 JSON.stringify 以及在 linting 后给出错误以使用我自己的实用程序函数?我怎样才能将其限制为仅 ts 和 tsx 文件?

我尝试使用无限制全局规则,但它没有解决问题,然后我使用无限制语法,看起来它可以工作,但我不确定如何使用它以及如何限制为仅ts 和 tsx

eslint typescript-eslint
1个回答
0
投票

您可以编写自己的规则, 在 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 识别。如有必要,您可能需要配置插件加载,具体取决于您的项目设置。

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.