eslint-plugin-compat
Version:
Lint browser compatibility of API used
87 lines (69 loc) • 3.37 kB
Markdown
eslint-plugin-compat
=====================
[](https://travis-ci.org/amilajack/eslint-plugin-compat)
[](https://ci.appveyor.com/project/amilajack/eslint-plugin-compat/branch/master)
[](http://badge.fury.io/js/eslint-plugin-compat)
[](https://david-dm.org/amilajack/eslint-plugin-compat)
[](https://npm-stat.com/charts.html?package=eslint-plugin-compat)

## Goals
- [x] Allow configuration of target browser/s
- [x] Use [caniuse](http://caniuse.com) and [@kangax's compat table](http://kangax.github.io/compat-table/es6/) for determining coverage
- [x] Enable config using `.eslintrc`
- [x] `browserslist` integration (using `package.json`)
See the [Road Map](https://github.com/amilajack/eslint-plugin-compat/wiki) for more details
## Installation
```bash
npm install --save-dev eslint-plugin-compat
```
Add `"compat"` to `.eslintrc` `"plugins"` section, add `"browser": true` to `"env"`
If you use **typescript**, see [typescript-eslint-parser](https://github.com/eslint/typescript-eslint-parser).
```js
// .eslintrc
{
// ...
"env": {
"browser": true
},
"plugins": ["compat"],
"rules": {
// ...
"compat/compat": 2
}
}
```
## Idea
**Default**
```
22: navigator.serviceWorker
^^^^^^^^^^^^^ `ServiceWorker` is not supported in IE 11, Edge 15
and Safari 8 😢
```
## Targeting Browsers
`eslint-plugin-compat` uses the browserslist configuration in `package.json`
See [ai/browserslist](https://github.com/ai/browserslist) for configuration. Here's some examples:
```js
// Simple configuration (package.json)
{
// ...
"browserslist": ["last 1 versions", "not ie <= 8"],
}
```
```js
// Use development and production configurations (package.json)
{
// ...
"browserslist": {
"development": ["last 2 versions"],
"production": ["last 4 versions"]
}
}
```
:bulb: You can also define browsers in a [separate browserslist file](https://github.com/ai/browserslist#config-file)
## Adding Polyfills
[See wiki polyfills section](https://github.com/amilajack/eslint-plugin-compat/wiki/Adding-polyfills)
## Inspiration
Toolchains for native platforms, like iOS and Android, have had API linting from the start. It's about time that the web had similar tooling.
This project was inspired by a two hour conversation I had with someone on the experience of web development and if it is terrible or not. The premise they argued was that `x` browser doesn't support `y` feature while `z` browser does. Eventually, I agreed with him on this and checked made this plugin to save web developers from having to memorize browser compatibility of specs.
## Demo
For a minimal demo, see [amilajack/eslint-plugin-compat-demo](https://github.com/amilajack/eslint-plugin-compat-demo)