Additional ESLint rules.
npm install @mysticatea/eslint-plugin




Additional ESLint rules and ESLint configurations for me.
```
npm install --save-dev eslint @mysticatea/eslint-plugin
- Node.js ^8.10.0 or newer versions.^6.3.0
- ESLint or newer versions.
Write in your ESLint configurations: http://eslint.org/docs/user-guide/configuring#using-the-configuration-from-a-plugin
- plugin:@mysticatea/es2020 ... Basic configuration for ES2020.plugin:@mysticatea/es2019
- ... Basic configuration for ES2019.plugin:@mysticatea/es2018
- ... Basic configuration for ES2018.plugin:@mysticatea/es2017
- ... Basic configuration for ES2017.plugin:@mysticatea/es2016
- ... Basic configuration for ES2016.plugin:@mysticatea/es2015
- ... Basic configuration for ES2015.plugin:@mysticatea/es5
- ... Basic configuration for ES5.plugin:@mysticatea/+modules
- ... Additional configuration for ES modules.plugin:@mysticatea/+browser
- ... Additional configuration for browser environment.plugin:@mysticatea/+node
- ... Additional configuration for Node.js environment.plugin:@mysticatea/+eslint-plugin
- ... Additional configuration for ESLint plugins. This includes plugin:mysticatea/+node setting.
#### Details
The main configurations plugin:@mysticatea/es* does:
- detect bug-like code by ESLint rules.
- enforce whitespace style by Prettier.
- handle the .ts files as TypeScript then check by typescript-eslint-parser and eslint-plugin-typescript..vue
- handle the files as Vue.js SFC then check by vue-eslint-parser and eslint-plugin-vue.test
- handle the files in /tests directory as mocha's test code.scripts
- handle the files in directory as Node.js environment..eslintrc.js
- handle the file as a Node.js script.webpack.config.js
- handle the file as a Node.js script.rollup.config.js
- handle the file as an ES module.
You can use combination of a main configuration and some additional configurations.
For examples:
##### For Node.js
`json`
{
"extends": [
"plugin:@mysticatea/es2015",
"plugin:@mysticatea/+node"
]
}
> It handles .js files as scripts and .mjs files as modules.
##### For Browsers
`json`
{
"extends": [
"plugin:@mysticatea/es2015",
"plugin:@mysticatea/+browser"
]
}
##### For Browsers with ES modules
`json`
{
"extends": [
"plugin:@mysticatea/es2015",
"plugin:@mysticatea/+modules",
"plugin:@mysticatea/+browser"
]
}
##### For ESLint plugins
`json`
{
"extends": [
"plugin:@mysticatea/es2015",
"plugin:@mysticatea/+eslint-plugin"
]
}
This plugin has some original rules and foreign rules.
#### Original rules
- @mysticatea/arrow-parens enforces parens of argument lists (excludes too redundant parens) (fixable).
- @mysticatea/block-scoped-var handles variables which are declared by var declaration as block-scoped. It disallows redeclarations, uses from outside of the scope, shadowing.this
- @mysticatea/no-instanceof-array disallows 'instanceof' for Array (fixable).
- @mysticatea/no-instanceof-wrapper disallows 'instanceof' for wrapper objects (fixable).
- @mysticatea/no-literal-call disallows a call of a literal.
- @mysticatea/no-this-in-static disallows /super in static methods.for-of
- @mysticatea/no-use-ignored-vars disallows a use of ignored variables.
- @mysticatea/no-useless-rest-spread disallows unnecessary rest/spread operators (fixable).
- @mysticatea/prefer-for-of requires statements instead of Array#forEach or something like (fixable).
#### Foreign rules
- All @mysticatea/eslint-comments/* rules are imported from eslint-plugin-eslint-comments.@mysticatea/eslint-plugin/*
- All rules are imported from eslint-plugin-eslint-plugin.@mysticatea/node/*
- All rules are imported from eslint-plugin-node.@mysticatea/ts/*
- All rules are imported from eslint-plugin-typescript.@mysticatea/vue/*
- All rules are imported from eslint-plugin-vue.@mysticatea/prettier
- The rule is imported from eslint-plugin-prettier.
> Q: Why don't you use those plugins directly?
> A: The combination with shareable configs and plugins has some problems because shareable configs were not designed to be used with plugins. @nzakas illustrated a way to use plugins as shareable configs together with other plugins in the discussion eslint/eslint#3458. This is the way.
This plugin follows semantic versioning and ESLint's Semantic Versioning Policy.
Welcome contributing!
Please use GitHub's Issues/PRs.
- npm test runs tests and measures coverage.npm run clean
- removes the coverage result of npm test command.npm run coverage
- shows the coverage result of npm test command.npm run update
- updates auto-generated files.npm run watch` runs tests and measures coverage when source code are changed.
-