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/**/*.js
、js/components/**.jsx
、js/**.jsx
、js/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);
}
});
虽然我不确定为什么需要这个或者为什么修复它。
这是我的 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/**/*.js
、js/components/**.jsx
、js/**.jsx
、js/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);
}
});
虽然我不确定为什么需要这个或者为什么修复它。