我需要为ESLint编写一个自定义规则来检查某人是否使用了某些代码构造。我是ESLint的新手,在注册规则时遇到了一些问题,所以我可以在.eslintrc
配置文件中使用它。规则本身如下:
一些定制-rule.js
'use strict';
module.exports = function(context) {
function applyRule(node) {
// some logic
}
return {
"Identifier": applyRule
}
};
module.exports.schema = [];
然后我有以下配置文件:
.eslintrc
{
"ecmaFeatures": {
"blockBindings": true,
"forOf": true,
"modules": true,
"arrowFunctions": true,
"classes": true
},
"rules": {
"semi": 2,
"some-custom-rule": 2
},
"env": {
"es6": true,
"browser": true
}
}
当我尝试使用Gulp任务执行ESLint时,会弹出以下错误:1:1 error Definition for rule 'some-custom-rule' was not found
。我认为这是因为我没有正确地要求规则。
Gulp任务如下:
var gulp = require('gulp');
var path = require('path');
var conf = require('./conf');
var eslint = require('gulp-eslint');
var rule = require('./rules/some-custom-rule');
gulp.task('eslint', function () {
return gulp.src(path.join(conf.paths.src, '**/*.js'))
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failAfterError());
});
如何使用自定义规则?我是否必须将其传递给ESLint或其他什么?提前谢谢!
答案 0 :(得分:1)
目前有两种方法可以使用ESLint注册规则,您可以使用--rulesdir
命令行标记并将其传递给自定义规则所在的目录。如果这样做,该目录中的所有规则将自动注册到ESLint。但是,这种方式已被弃用。更好的方法是创建plugin
,这是一种通过NPM模块分发规则包的方法。您可以找到有关创建插件here的更多信息。