ESLint同时输出到文件和控制台

时间:2019-10-15 09:39:08

标签: node.js command-line-interface eslint

默认情况下,ESLint会将其结果打印到标准输出中。如果添加输出选项,它将把输出重定向到文件。到目前为止,一切都很好,但是有办法做到这两者吗?

我们需要GitLab的文件输出来解析结果并将其显示在UI中,但是我们的某些开发人员不会费心去改变他们做事的方式,而是想查看输出。

是否可以通过现成的方式同时获得两者?还是我唯一的机会使用文档中提到的CLIEngine Node来编写自己的脚本来运行ESLint?

谢谢。

3 个答案:

答案 0 :(得分:0)

因此,经过一些研究,我想我自己找到了答案。

基本上有两种方法可以同时在控制台和文件上输出:

  1. 简单的方法是使用名为ESLint Output的JavaScript程序包。
  2. 更复杂的方法基本上是自己构建所说的包。您必须创建一个JavaScript文件来代替ESLint运行,然后在该文件中导入/需要ESLint。通过将ESLint作为软件包导入而不是直接运行,可以使用Node的CLIEngine在要插入的文件上运行ESLint,并将输出存储在变量中。然后可以将该输出保存到文件中并再次打印。

希望没有人感到意外,选项2中描述的方法正是选项1中的软件包所做的,并且将其包装在一个易于理解的配置文件中,并将为您收集来自默认eslintrc文件的所有配置。

答案 1 :(得分:0)

您可以使用eslint-html-reporter来实现。如果您想从Terminal 获得结果并将其导出到 .html 文件中,那么Terminal的输出将变得不太漂亮(如果仅在其中一种方法中完成),但是可以通过运行以下方法来实现:

1.2(在此示例中,它以递归方式查找项目文件夹中的./node_modules/.bin/eslint --ext .jsx . & ./node_modules/.bin/eslint --ext .jsx . -f node_modules/eslint-html-reporter/reporter.js -o report.html文件)。

答案 2 :(得分:0)

我遇到了同样的问题,并通过两次运行eslint来解决此问题。

使用以下命令创建了一个shell脚本

#!/usr/bin/env bash
node_modules/.bin/eslint --quiet \
    --max-warnings 100 \
    -o eslint-output.$1 \
    -f $1 '*/**/*.{js,ts,tsx}' 

然后通过詹金斯(Jenkins)两次调用脚本:

steps {
    echo 'Rodando ESLint...' 
    sh("""
        yarn install
        ./eslint.sh junit || true
        ./eslint.sh codeframe || true
    """)

    junit(
        allowEmptyResults: true,
        healthScaleFactor: 0.0,
        testResults: 'eslint-output.junit'
    )
}