npm add -D @andreaspizsa/eslint-config-xo
Automatically adds the package to xo.extends
using postinstaller.
{
"semicolon": false,
"space": true,
"func-names": "off",
"no-negated-condition": "warn",
"operator-linebreak": [
"error",
"before",
{
"overrides": {
"x?": "ignore",
"x:": "ignore"
}
}
]
}
function a() {
return function namedFunction() { // standard xo would complain here
return b
}
}
Negated conditions are fine if there’s a rather short block - often a one-liner - followed by a longer block. Getting the "short block" out of the way reduces cognitive load.
Good
function a(b) {
if(!b) {
log('b is empty')
} else {
// do
// something
// more complicated
// in a longer
// block
}
}
By default, xo favors this:
Bad
function a(b) {
if(b) {
// do
// something
// more complicated
// in a longer
// block
} else {
log('b is empty')
}
}
I prefer
Good
const result = isThisConditionActuallyTrue()
? doThisOperation()
: elseThisOperation()
over
Bad
const result = isThisConditionActuallyTrue() ?
doThisOperation() :
elseThisOperation()