如何在 cli 中使用 ejs lint

mo_*_*aat 5 ejs eslint

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

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

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

Rec*_*nes 5

简答

直接从终端运行它:

./node_modules/.bin/ejslint src/templates/some-template.ejs
Run Code Online (Sandbox Code Playgroud)

或者使用npm 脚本

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

// terminal
npm run lint:ejs
Run Code Online (Sandbox Code Playgroud)

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

扩展答案

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

如果您有某个src/templates目录,则可以通过执行以下操作来 lint 所有 EJS 文件:

find src/templates -type f -iname '*.ejs' -exec bash -c "./node_modules/.bin/ejslint '{}'" \;
Run Code Online (Sandbox Code Playgroud)

这适用于 Unix 但不适用于 Windows。您可以准备一些节点脚本以使用 ejslint API 跨系统执行此操作。

还有一个grunt 插件

如果你想同时拥有 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 '{}'\" \\;"
  }
}
Run Code Online (Sandbox Code Playgroud)

如果你使用 grunt,你可以为 eslint 和 ejslint 创建不同的任务,然后创建一个组任务

grunt.registerTask('lint', ['eslint', 'ejslint']);
Run Code Online (Sandbox Code Playgroud)