【问题标题】:How to configure ESLint so that it disallows default exports如何配置 ESLint 使其禁止默认导出
【发布时间】:2019-03-05 00:44:42
【问题描述】:

我已经在网络和 StackOverflow 上搜索了很长一段时间,但没有成功。

我正在尝试让 ESLint 将以下内容标记为错误:

export default ...;

default 是这里的关键。到目前为止,我得到的最好的参考是eslint-plugin-import 插件及其一些可以让我更接近目标的规则,即no-anonymous-default-export 规则。但即使使用此规则,以下默认导出也是有效的:

const foo = 123
export default foo

export default class MyClass() {}

export default function foo() {}

如何配置 ESLint 以使这四个也被视为错误?

【问题讨论】:

  • 没有这样的规则。实际上我们有the opposite,如果你只有一个导出符号,它应该是默认的。
  • @Sylwester 这正是我得到的印象,但这对于我们的代码库来说并不理想
  • @Dethariel 您能否阐明您在代码库中使用默认导出所面临的具体问题?我想不出它们为什么会出现问题的原因,我想帮助您避免 XY 问题。
  • @AkshatMahajan 唯一的问题是一致性。出于我们团队偏好的原因,我们想用import { Foo } from 'foo';import Bar from 'bar'; 来解决问题,并且有一个 linting 规则来检查这些事情会很棒
  • @Dethariel 我想这是有道理的。您可以随时 define your own rule 或向 ESLint 提出建议。

标签: javascript eslint


【解决方案1】:

您可以使用no-restricted-syntax rule 执行此操作。尝试将其粘贴到demo 中进行尝试(您需要先在选项中将“Source Type”更改为“module”):

/* eslint "no-restricted-syntax": ["error", {
    "selector": "ExportDefaultDeclaration",
    "message": "Prefer named exports"
  }] */
export default class Foo { } // 5:1 - Prefer named exports (no-restricted-syntax)

【讨论】:

    【解决方案2】:

    如果您已经在使用eslint-plugin-import,则可以使用no-default-export 规则(2018 年 2 月左右添加)。

    【讨论】:

      猜你喜欢
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多