UNPKG

7.2 kBMarkdownView Raw
1[![NPM version][npm-image]][npm-url]
2[![build status][travis-image]][travis-url]
3[![Test coverage][coveralls-image]][coveralls-url]
4[![Downloads][downloads-image]][downloads-url]
5[![Bountysource](https://www.bountysource.com/badge/tracker?tracker_id=282608)](https://www.bountysource.com/trackers/282608-eslint?utm_source=282608&utm_medium=shield&utm_campaign=TRACKER_BADGE)
6[![Join the chat at https://gitter.im/eslint/eslint](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/eslint/eslint?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
7
8# ESLint
9
10[Website](http://eslint.org) | [Configuring](http://eslint.org/docs/user-guide/configuring) | [Rules](http://eslint.org/docs/rules/) | [Contributing](http://eslint.org/docs/developer-guide/contributing) | [Twitter](https://twitter.com/geteslint) | [Mailing List](https://groups.google.com/group/eslint)
11
12ESLint is a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code. In many ways, it is similar to JSLint and JSHint with a few exceptions:
13
14* ESLint uses [Espree](https://github.com/eslint/espree) for JavaScript parsing.
15* ESLint uses an AST to evaluate patterns in code.
16* ESLint is completely pluggable, every single rule is a plugin and you can add more at runtime.
17
18## Installation
19
20You can install ESLint using npm:
21
22 npm install -g eslint
23
24## Usage
25
26If it's your first time using ESLint, you should set up a config file using `--init`:
27
28 eslint --init
29
30After that, you can run ESLint on any JavaScript file:
31
32 eslint test.js test2.js
33
34## Configuration
35
36After running `eslint --init`, you'll have a `.eslintrc` file in your directory. In it, you'll see some rules configured like this:
37
38```json
39{
40 "rules": {
41 "semi": [2, "always"],
42 "quotes": [2, "double"]
43 }
44}
45```
46
47The names `"semi"` and `"quotes"` are the names of [rules](http://eslint.org/docs/rules) in ESLint. The number is the error level of the rule and can be one of the three values:
48
49* `0` - turn the rule off
50* `1` - turn the rule on as a warning (doesn't affect exit code)
51* `2` - turn the rule on as an error (exit code will be 1)
52
53The three error levels allow you fine-grained control over how ESLint applies rules (for more configuration options and details, see the [configuration docs](http://eslint.org/docs/user-guide/configuring)).
54
55## Sponsors
56
57* Development is sponsored by [Box](https://box.com)
58
59## Team
60
61These folks keep the project moving and are resources for help:
62
63* Nicholas C. Zakas ([@nzakas](https://github.com/nzakas)) - project lead
64* Ilya Volodin ([@ilyavolodin](https://github.com/ilyavolodin)) - reviewer
65* Brandon Mills ([@btmills](https://github.com/btmills)) - reviewer
66* Gyandeep Singh ([@gyandeeps](https://github.com/gyandeeps)) - reviewer
67* Mathias Schreck ([@lo1tuma](https://github.com/lo1tuma)) - committer
68* Jamund Ferguson ([@xjamundx](https://github.com/xjamundx)) - committer
69* Ian VanSchooten ([@ianvs](https://github.com/ianvs)) - committer
70* Toru Nagashima ([@mysticatea](https://github.com/mysticatea)) - committer
71* Burak Yiğit Kaya ([@byk](https://github.com/byk)) - committer
72
73## Releases
74
75We have scheduled releases every two weeks on Friday or Saturday.
76
77## Frequently Asked Questions
78
79### Why don't you like JSHint???
80
81I do like JSHint. And I like Anton and Rick. Neither of those were deciding factors in creating this tool. The fact is that I've had a dire need for a JavaScript tool with pluggable linting rules. I had hoped JSHint would be able to do this, however after chatting with Anton, I found that the planned plugin infrastructure wasn't going to suit my purpose.
82
83### I'm not giving up JSHint for this!
84
85That's not really a question, but I got it. I'm not trying to convince you that ESLint is better than JSHint. The only thing I know is that ESLint is better than JSHint for what I'm doing. In the off chance you're doing something similar, it might be better for you. Otherwise, keep using JSHint, I'm certainly not going to tell you to stop using it.
86
87### How does ESLint performance compare to JSHint and JSCS?
88
89ESLint is slower than JSHint, usually 2-3x slower on a single file. This is because ESLint uses Espree to construct an AST before it can evaluate your code whereas JSHint evaluates your code as it's being parsed. The speed is also based on the number of rules you enable; the more rules you enable, the slower the process.
90
91Despite being slower, we believe that ESLint is fast enough to replace JSHint without causing significant pain.
92
93ESLint is faster than JSCS, as ESLint uses a single-pass traversal for analysis whereas JSCS using a querying model.
94
95If you are using both JSHint and JSCS on your files, then using just ESLint will be faster.
96
97### Is ESLint just linting or does it also check style?
98
99ESLint does both traditional linting (looking for problematic patterns) and style checking (enforcement of conventions). You can use it for both.
100
101### Who is using ESLint?
102
103The following projects are using ESLint to validate their JavaScript:
104
105* [Drupal](https://www.drupal.org/node/2274223)
106* [Esprima](https://github.com/ariya/esprima)
107* [io.js](https://github.com/iojs/io.js/commit/f9dd34d301ab385ae316769b85ef916f9b70b6f6)
108* [WebKit](https://bugs.webkit.org/show_bug.cgi?id=125048)
109
110In addition, the following companies are using ESLint internally to validate their JavaScript:
111
112* [Box](https://box.com)
113* [CustomInk](https://customink.com)
114* [Fitbit](http://www.fitbit.com)
115* [HolidayCheck](http://holidaycheck.de)
116* [the native web](http://www.thenativeweb.io)
117
118### What about ECMAScript 6 support?
119
120ESLint has full support for ECMAScript 6. By default, this support is off. You can enable ECMAScript 6 support through [configuration](http://eslint.org/docs/user-guide/configuring).
121
122### Does ESLint support JSX?
123
124Yes, ESLint natively supports parsing JSX syntax (this must be enabled in [configuration](http://eslint.org/docs/user-guide/configuring).). Please note that supporting JSX syntax *is not* the same as supporting React. React applies specific semantics to JSX syntax that ESLint doesn't recognize. We recommend using [eslint-plugin-react](https://www.npmjs.com/package/eslint-plugin-react) if you are using React and want React semantics.
125
126### What about ECMAScript 7/2016 and experimental features?
127
128ESLint doesn't natively support experimental ECMAScript language features. You can use [babel-eslint](https://github.com/babel/babel-eslint) to use any option available in Babel.
129
130### Where to ask for help?
131
132Join our [Mailing List](https://groups.google.com/group/eslint) or [Chatroom](https://gitter.im/eslint/eslint)
133
134
135[npm-image]: https://img.shields.io/npm/v/eslint.svg?style=flat-square
136[npm-url]: https://www.npmjs.com/package/eslint
137[travis-image]: https://img.shields.io/travis/eslint/eslint/master.svg?style=flat-square
138[travis-url]: https://travis-ci.org/eslint/eslint
139[coveralls-image]: https://img.shields.io/coveralls/eslint/eslint/master.svg?style=flat-square
140[coveralls-url]: https://coveralls.io/r/eslint/eslint?branch=master
141[downloads-image]: http://img.shields.io/npm/dm/eslint.svg?style=flat-square
142[downloads-url]: https://www.npmjs.com/package/eslint