Globbing 不使用 gulp eslint 和 jsx 文件

Globbing not working with gulp eslint with jsx files

这是我的 lint 任务:

gulp.task('lint', function(){
  gulp.src(fileString)
    .pipe(eslint())
    .pipe(eslint.format());
});

如果 fileString'js/**/*.js',它只会很好地检查 .js 文件。如果它是 'js/components/**.jsx',它会很好地检查 .jsx。但是 'js/**/*.jsx''js/**/*/.*{js,jsx}',它看到的是所有正确的文件,但对它们什么都不做。

这是我的 /js 目录(用于反应项目):

├── stores
│   └── heyStore.jsx
├── models.js
├── mixins.js
├── data
│   └── states.js
├── config.js
├── components
│   ├── firstThing.jsx
│   ├── aThing.jsx
│   ├── whoaWhat.jsx
│   └── nahYo.jsx
├── app.jsx
└── api
    ├── prod.js
    └── mock.js

为了以防万一,这是我的 .eslintrc 文件:

{
  "parser": "babel-eslint",
  "plugins": [
    "react"
  ],
  "ecmaFeatures": {
    "jsx": true,
    "arrowFunctions": true,
    "blockBindings": true,
    "generators": true
  },
  "rules": {
    "strict": 0,
    "no-underscore-dangle": 0,
    "no-unused-vars": 0,
    "curly": 0,
    "no-multi-spaces": 0,
    "key-spacing": 0,
    "no-return-assign": 0,
    "consistent-return": 0,
    "no-shadow": 0,
    "no-comma-dangle": 0,
    "no-use-before-define": 0,
    "no-empty": 0,
    "new-parens": 0,
    "no-cond-assign": 0,
    "quotes": [2, "single", "avoid-escape"],
    "camelcase": 0,
    "semi": [2, "always"],
    "new-cap": [1, { "capIsNew": false }],
    "no-undef": 2
  },
  "env": {
    "browser": true,
    "node": true
  },
  "globals": {
  }
}

作为 gulp.src 的输入,您可以提供 globs 的数组。实际上这个组合应该有效:[js/**/*.js, js/**/*.jsx]。如果您只说 js/components/**.jsx,也远非理想,请使用适合您的方法:[js/**/*.jsjs/components/**.jsxjs/**.jsxjs/stores/**.jsx]

我找到了修复程序 here

我的 gulp 任务基本上是这样的:

gulp.task('lint', function(){
  gulp.src('js/**/*.{js,jsx}')
    .pipe(eslint())
    .pipe(eslint.format())
    .on('data', function(file) {
      if(file.eslint.messages && file.eslint.messages.length){
        gulp.fail = true;
      }
    });

});

process.on('exit', function() {
  if (gulp.fail) {
    process.exit(1);
  }
});

虽然我不确定为什么需要这个或者为什么修复它。