【问题标题】:how to use ejs lint in cli如何在 cli 中使用 ejs lint
【发布时间】:2021-06-24 13:45:04
【问题描述】:

我在节点上使用 EJS 作为我的视图引擎并进行快速设置。我想使用 ejs-lint 来帮助获取错误信息。我以前没有使用过 linter,但是通过阅读这里的文档:https://github.com/RyanZim/EJS-Lint 我假设您可以像这样在命令行中检查指定文件的错误:ejslint

我的假设是否正确,我做错了什么?我已经使用npm install ejs-lint --save-dev安装了

另外,如果我打算将 ESlint 添加到我的项目中,我猜我可以让它与 EJSlint 一起工作?

【问题讨论】:

    标签: ejs eslint


    【解决方案1】:

    简答

    直接从终端运行:

    ./node_modules/.bin/ejslint src/templates/some-template.ejs
    

    或者npm script:

    // package.json
    {
      ...
      "scripts": {
        "lint:ejs": "ejslint src/templates/some-template.ejs"
      }
    }
    
    // terminal
    npm run lint:ejs
    

    ESLint 和 EJSlint 是不同的专有进程。 ESLint 分析的内容不应由 EJSLint 分析,反之亦然。两者都安装不会导致任何问题。

    扩展答案

    对于我测试的内容,您必须对每个文件使用 ejs linter CLI。这不如eslint 有用,后者可以处理多个文件、排除项等。

    如果您有一些 src/templates 目录,您可以通过执行以下操作对所有 EJS 文件进行 lint:

    find src/templates -type f -iname '*.ejs' -exec bash -c "./node_modules/.bin/ejslint '{}'" \;
    

    这适用于 Unix,但不适用于 Windows。你可以准备一些节点脚本来跨系统使用 ejslint API。

    还有一个grunt plugin

    如果你想同时拥有 ESLint 和 EJSLint,你应该为它们设置不同的 npm 脚本,例如:

    // package.json
    {
      ...
      "scripts": {
        "lint": "npm run lint:js && npm run lint:ejs",
        "lint:js": "eslint src --ignore-path src/templates",
        "lint:ejs": "find src/templates -type f -iname '*.ejs' -exec bash -c \"./node_modules/.bin/ejslint '{}'\" \\;"
      }
    }
    

    如果你使用 grunt,你可以为 eslint 和 ejslint 创建不同的任务,然后create a group task

    grunt.registerTask('lint', ['eslint', 'ejslint']);
    

    【讨论】:

    • 感谢您的详细解答。我尝试了 EJSLint 的两种选择,但都没有奏效。当我在终端中运行它时,它只会挂起./node_modules/.bin/ejslint src/templates/some-template.ejs。真是郁闷,连官方文档都没有明确说明如何使用。还有其他想法吗?我应该抓住一些东西,因为我收到以下错误:SyntaxError: Unexpected token ) in C:\dev\XXXX\views\eventdetail.ejs while compiling ejs If the above error is not helpful, you may want to try EJS-Lint: https://github.com/RyanZim/EJS-Lint
    • 您可能需要将它与 Windows 语法而不是 Unix 一起使用:.\node_modules\.bin\ejslint.cmd views\eventdetail.ejs
    • 官方 EJS lint 文档说,如果您收到这样的错误(“意外令牌”),可能是由于标签未关闭。
    【解决方案2】:

    实际上,以下方式是最简单的,也是迄今为止最快的执行时间。它还具有更好的错误日志记录,因为它不通过 find 命令。

    ejslint $(find ./ -type f -iname '*.ejs')
    

    【讨论】:

      【解决方案3】:

      您可以从项目根目录中的命令行运行npx ejslint **/*.ejs 来检查项目中的所有 ejs 文件。

      npx 是必需的,因为您使用了--save-dev(或-D),如果您使用了--global(或-g),那么您可以使用ejslint **/*.ejs 直接调用ejs lint

      **/*.ejs 将选择任何文件夹中以.ejs 结尾的任何文件。

      【讨论】:

        【解决方案4】:

        它们没有关于在 cmd 上使用 ejslint 的明确说明。尝试在编辑器中自己调试代码行,因为它说它与代码中的语法错误有关。为我工作!

        哦,好消息是你仍然可以运行 ESlint 来调试你的 Js 文件。

        【讨论】:

          猜你喜欢
          • 2017-03-15
          • 1970-01-01
          • 2021-04-02
          • 1970-01-01
          • 2015-06-26
          • 1970-01-01
          • 2016-09-23
          • 2018-07-30
          • 2020-12-23
          相关资源
          最近更新 更多