当使用 npm 运行-script 运行 时 ESLint 产生不同的输出

ESLint producing different output when run with npm run-script

当我使用 eslint scripts/**/*.js 对我的代码进行 lint 时,我看到两个 linting 错误:

» eslint scripts/**/*.js
/Users/user/dev/scripts/application.js
  3:8  error  "React" is defined but never used  no-unused-vars

/Users/user/dev/scripts/components/Header.js
  24:2  error  Unnecessary semicolon  no-extra-semi

✖ 2 problem (2 error, 0 warnings)

没关系。当我将该命令放入 package.json 中的 "scripts" 时,我只得到一个错误。

// package.json
// ...
"scripts": {
  "lint": "eslint scripts/**/*.js"
}
// ...


» npm run lint
/Users/david.tuite/dev/ui/scripts/components/Header.js
  24:2  error  Unnecessary semicolon  no-extra-semi

✖ 2 problems (2 errors, 0 warnings)

另一个 linting 错误是怎么回事?

编辑 我开始怀疑这是一个问题。丢失的 linting 错误出现在不在 scripts.

的子目录中的文件中

Glob 在 package.json 文件中的工作方式不同。

诀窍是将路径匹配器用单引号括起来,以便在将它们传递给 eslint 之前在 shell 级别展开它们。

// package.json
// ...
"scripts": {
  "lint": "eslint 'scripts/**/*.js'"
}
// ...

听起来大卫的回答解决了他遇到的问题。但是,我遇到了与描述的问题相同的症状。

在我的例子中,问题是 npm 在项目目录中使用了 node_modules,它的插件版本与全局 npm 文件夹不同。

运行 命令行中的 eslint 使用的是全局版本。协调这些版本解决了我的问题。