Linting
Our recommended linter is ESLint. This is what our Stickler configuration uses.
Running ESLint locally
The best time to find out about a code error (or stylistic faux pas) is when you type it out. For this reason, you should run a linter locally.
# Install it through npm:
$ npm install -g eslint
# Try it out locally if you like
$ eslint path/to/file.js
PyCharm
PyCharm has different ways of setting this up depending on the version.
If you get errors you may need to downgrade ESLint to version 5. This appears to be an issue on all versions of PyCharm prior to 2019.1.3.
Vim
NeoMake
Install NeoMake if you haven’t already.
let g:neomake_javascript_enabled_makers = ['eslint']
Syntastic
Install syntastic if you haven’t already.
let g:syntastic_javascript_checkers = ['eslint']
Configuring our lint rules
The .eslintrc.js file in the root of the commcare-hq repository defines the rules to check.
While this configuration is fairly stable, see the docs for help should you need to update it.
Looking up rules
Let’s say you ran eslint on this code
var obj = {
foo: 3,
foo: 5
};
You’d probably get an error like: > Duplicate key ‘foo’. (no-dupe-keys)
The rule then is no-dupe-keys
. You can look it up on the rules
page for a description.
Adding an exception
A foolish consistency is the hobgoblin of simple minds. Sometimes it IS
okay to use console.log
. Here are a couple ways to say “yes, this IS
okay”.
console.log('foo'); // eslint-disable-line no-console
// eslint-disable-next-line no-console
console.log('foo');
See the docs for more options to disable rules for on a case by case basis.