【问题标题】:Force to use specific ES version强制使用特定的 ES 版本
【发布时间】:2017-02-01 04:32:33
【问题描述】:

我有一些文件将由 Babel 处理,因此是用 ES6 编写的。但是,我也有一些文件不会通过 Babel,因此应该在同一个项目的 ES5 中。如果我不小心在这些文件中使用了一些 ES6 功能(例如箭头函数、解构),我可以配置 Eslint 以使其抛出错误吗?

我注意到,设置 "parserOptions": {"ecmaVersion": 5} 并没有像设置 "env": {"es6": false} 那样提供理想的效果。

【问题讨论】:

  • 您是否在区分文件时遇到问题(您提到两者都有),或者只是根据 ES5 对其进行 lint 处理时遇到问题?
  • @Bergi,不,文件被分隔到不同的文件夹中。所以我可以很容易地在那里放置不同的.eslintrc。问题是 - 我必须在 .eslintrc 中写下禁止使用 es6 语法的内容。
  • 在我看来,拥有一个单独的 .eslintrc 文件和 "parserOptions": {"ecmaVersion": 5} 应该可以工作。你说“没有提供理想的效果”,它有任何效果吗?

标签: javascript ecmascript-6 ecmascript-5 eslint


【解决方案1】:

您可以尝试使用带内联注释的禁用规则

/* eslint-disable */
    alert('foo');
/* eslint-enable */

也可以看看http://eslint.org/docs/user-guide/configuring

【讨论】:

  • 禁用规则没有问题。我只是想知道是否有一些禁止 es6 东西的规则(最好 - 一个禁止所有新东西的规则)。
  • 你可以使用 jshint 和参数 "esversion" : 6
【解决方案2】:

最终证明,问题出在我使用的可共享配置中 (xo)。在该配置中,ecmaVersion 设置为 6,ESLint doesn't support override for ecmaVersion

【讨论】:

    【解决方案3】:

    我的配置中有sourceType: "module"。我认为这迫使 eslint 进入 ES6 模式。

    parserOptions: {
      ecmaVersion: 5,
      sourceType: "module",
    },
    

    当我删除 sourceType 时,eslint 确实开始警告不恰当地使用 ES6 语法。

    (虽然这通常来自实际的解析错误而不是 linter 规则!)

    如果您从另一个配置中继承了 sourceType,那么您可以尝试覆盖它,但我不知道默认 (ES5) 值是什么。

    【讨论】:

      猜你喜欢
      • 2012-04-23
      • 2022-07-28
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      相关资源
      最近更新 更多