@svenpiller/eslint-plugin
Additional ESLint rules and ESLint configurations for me.
💿 Installation
npm install --save-dev eslint @svenpiller/eslint-plugin
Requirements
- Node.js
^6.5.0
,^8.0.0
,^9.0.0
or newer versions. - ESLint
^4.19.1
or newer versions.
📖 Usage
Write in your ESLint configurations: http://eslint.org/docs/user-guide/configuring#using-the-configuration-from-a-plugin
Configs
-
plugin:@svenpiller/es2019
... Basic configuration for ES2019. -
plugin:@svenpiller/es2018
... Basic configuration for ES2018. -
plugin:@svenpiller/es2017
... Basic configuration for ES2017. -
plugin:@svenpiller/es2016
... Basic configuration for ES2016. -
plugin:@svenpiller/es2015
... Basic configuration for ES2015. -
plugin:@svenpiller/es5
... Basic configuration for ES5. -
plugin:@svenpiller/+modules
... Additional configuration for ES modules. -
plugin:@svenpiller/+browser
... Additional configuration for browser environment. -
plugin:@svenpiller/+angular
... Additional configuration for angularJs browser environment. -
plugin:@svenpiller/+node
... Additional configuration for Node.js environment. -
plugin:@svenpiller/+eslint-plugin
... Additional configuration for ESLint plugins. This includesplugin:sven-piller/+node
setting.
Details
The main configurations plugin:@svenpiller/es*
does:
- detect bug-like code by ESLint rules.
- enforce whitespace style by Prettier.
- handle the
.ts
files as TypeScript then check bytypescript-eslint-parser
andeslint-plugin-typescript
. - handle the
.vue
files as Vue.js SFC then check byvue-eslint-parser
andeslint-plugin-vue
. - handle the files in
test
/tests
directory asmocha
's test code. - handle the files in
scripts
directory as Node.js environment. - handle the
.eslintrc.js
file as a Node.js script. - handle the
webpack.config.js
file as a Node.js script. - handle the
rollup.config.js
file as an ES module.
You can use combination of a main configuration and some additional configurations. For examples:
For Node.js
{
"extends": [
"plugin:@svenpiller/es2015",
"plugin:@svenpiller/+node"
]
}
It handles
.js
files as scripts and.mjs
files as modules.
For Browsers
{
"extends": [
"plugin:@svenpiller/es2015",
"plugin:@svenpiller/+browser"
]
}
For Browsers with ES modules
{
"extends": [
"plugin:@svenpiller/es2015",
"plugin:@svenpiller/+modules",
"plugin:@svenpiller/+browser"
]
}
For ESLint plugins
{
"extends": [
"plugin:@svenpiller/es2015",
"plugin:@svenpiller/+eslint-plugin"
]
}
Rules
This plugin has some original rules and foreign rules.
Original rules
- @svenpiller/arrow-parens enforces parens of argument lists (excludes too redundant parens) (fixable).
-
@svenpiller/block-scoped-var handles variables which are declared by
var
declaration as block-scoped. It disallows redeclarations, uses from outside of the scope, shadowing. - @svenpiller/no-instanceof-array disallows 'instanceof' for Array (fixable).
- @svenpiller/no-instanceof-wrapper disallows 'instanceof' for wrapper objects (fixable).
- @svenpiller/no-literal-call disallows a call of a literal.
-
@svenpiller/no-this-in-static disallows
this
/super
in static methods. - @svenpiller/no-use-ignored-vars disallows a use of ignored variables.
- @svenpiller/no-useless-rest-spread disallows unnecessary rest/spread operators (fixable).
-
@svenpiller/prefer-for-of requires
for-of
statements instead ofArray#forEach
or something like (fixable).
Foreign rules
- All
@svenpiller/eslint-comments/*
rules are imported from eslint-plugin-eslint-comments. - All
@svenpiller/eslint-plugin/*
rules are imported from eslint-plugin-eslint-plugin. - All
@svenpiller/node/*
rules are imported from eslint-plugin-node. - All
@svenpiller/ts/*
rules are imported from eslint-plugin-typescript. - All
@svenpiller/vue/*
rules are imported from eslint-plugin-vue. - The
@svenpiller/prettier
rule is imported from eslint-plugin-prettier. - All
@svenpiller/angular/*
rules are imported from eslint-plugin-angular.
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.
🚥 Semantic Versioning Policy
This plugin follows semantic versioning and ESLint's Semantic Versioning Policy.
📰 Changelog
❤️ Contributing
Welcome contributing!
Please use GitHub's Issues/PRs.
Development Tools
-
npm test
runs tests and measures coverage. -
npm run clean
removes the coverage result ofnpm test
command. -
npm run coverage
shows the coverage result ofnpm test
command. -
npm run update
updates auto-generated files. -
npm run watch
runs tests and measures coverage when source code are changed.