Eslint --fix 抑制错误但实际上并没有更改文件

Posted

技术标签:

【中文标题】Eslint --fix 抑制错误但实际上并没有更改文件【英文标题】:Eslint --fix supresses errors but doesn't actually change file 【发布时间】:2019-07-27 10:45:58 【问题描述】:

我正在使用 gulp 和 eslint 来构建我的代码,当我运行 lint 时,我遇到了大量缩进/间距错误。我将修复标志添加到我的 gulpfile 中:

gulp.task('lint', function() 
    return gulp
        .src([config.tap.src])
        .pipe(eslint(
            fix:true,
            envs: ['jquery', 'browser']
          
        ))
        .pipe(eslint.format())
        .pipe(eslint.failAfterError());
);

并且错误消失了。但是,我的文件似乎和以前一样有不正确的缩进;根据文档修复应该更改我的文件吗?我需要其他参数来修复这些更改吗?

例如我得到了错误:

12:1   error  Expected indentation of 6 spaces but found 12

但修复后缩进还是一样。 有人有解决办法吗?

【问题讨论】:

您如何查看这些文件? 一个名为 Atom 的 IDE。但这些变化也没有出现在 Github 拉取请求中——afaik git 总是显示缩进/间距变化 --fix 标志可能是正确的,Atom 只是美化了有问题的文件的视图。尝试使用记事本或 vi 等“简单”文本编辑器在应用修复之前和之后查看它们。 我认为是这种情况,直到我看到我的 git PR 没有任何变化。不过,我只是使用记事本进行了测试——即使没有错误或警告,它也不能修复缩进。我检查了 master 分支(没有修复),运行gulp lint,在一行中有 4 个空格而不是 2 个时出错。切换到fix:true 分支,运行gulp lint,没有错误,仍然是 4 个空格 【参考方案1】:

事实证明,使用 eslint,您需要指定修复程序的保存位置。其他 SO 线程建议 gulp.dest('.')gulp.dest('./') 但这些为我创建了新文件夹,而不是覆盖原件。我在下面发布的内容对我有用。

return gulp
  .src([config.src])
  .pipe(eslint( fix: true ))
  .pipe(eslint.format())
  .pipe(gulp.dest(file => file.base))
  .pipe(eslint.failAfterError());

【讨论】:

以上是关于Eslint --fix 抑制错误但实际上并没有更改文件的主要内容,如果未能解决你的问题,请参考以下文章

有没有更好的方法来抑制赛普拉斯开玩笑测试顶部关于“三斜杠指令”的 ESLint 错误?

--fix 不使用 eslint 修复错误

Tslint/eslint vs 更漂亮

如何在 WebStorm 中抑制 TS2322 警告?

使用 .eslintrc.js 将所有 eslint 错误更改为警告而不是错误

如何使 Eslint/Prettier 在 ci 环境中出现错误和警告时失败?