eslint-plugin-eggache
custom eslint rule for egg RTFM questions!NPM versionnpm-imagenpm-url !build statustravis-imagetravis-url !Test coveragecodecov-imagecodecov-url !David depsdavid-imagedavid-url !Known Vulnerabilitiessnyk-imagesnyk-url !NPM downloaddownload-imagedownload-url
Usage
npm i eslint-plugin-eggache --save
Add
eggache
to the plugins section of your .eslintrc
configuration file.// ${app_root}/.eslintrc
{
"extends": [
"plugin:eggache/recommended"
]
}
By default it enable all the recommended rules, if you want to custom, just configure the rules section.
// ${app_root}/.eslintrc
{
"extends": [
"plugin:eggache/recommended"
],
"rules": {
'eggache/no-override-exports': [ 'error' ],
'eggache/no-unexpected-plugin-keys': 'error',
}
}
Rules
no-override-exports
A common mistake that newbie will make - overridemodule.exports
and exports
./* eslint eggache/no-override-exports: [ 'error' ] */
// config/config.default.js
exports.view = {};
module.exports = appInfo => {
const config = exports = {};
config.keys = '123456';
return config;
}
Options:
The first options is a boolean, default to false, means only check:
config/config.*.js
config/plugin.*.js
set it to
true
means to check all files./* eslint eggache/no-override-exports: [ 'error', true ] */
// due to options `true`, this will pass the lint
// ${app_root}/app.js
module.exports = exports = {};
exports.keys = '123456';
no-unexpected-plugin-keys
Sometimes, developer will confuseplugin.js
and config.default.js
.plugin.js
only allow [ 'enable', 'package', 'path', 'env' ]
and it control whether to load a plugin.The plugin's
config
should write to config/config.{env}.js
./* eslint eggache/no-unexpected-plugin-keys: [ 'error' ] */
// config/plugin.js
module.exports = {
test: {
enable: true,
package: 'egg-test',
someConfig: 'should not place here',
},
}
no-only-tests
A common mistake that developer will make - forget to remove.only
in tests before committing./* eslint eggache/no-only-tests: [ 'error' ] */
describe.only('desc something', function() {
it.only('assert somnething', function() {
// do nothing
});
})