/javascript

Beautiful Javascript code at Actano

Primary LanguageJavaScript

Actano Javascript Style Guide

npm code style: actano

This package provides Actano's .eslintrc.json as an extensible shared config. It extends the popular config by Airbnb and changes a few rules to fit our taste.

Usage

Our default export contains all of our ESLint rules, including ECMAScript 6+ and React. It requires eslint, eslint-plugin-import, eslint-plugin-react, and eslint-plugin-jsx-a11y.

Install this package and all it's peer dependencies. Unfortunately, they cannot be normal dependencies.

npm install --save-dev eslint-config-actano eslint-plugin-import eslint-plugin-react eslint-plugin-jsx-a11y eslint

Create an .eslintrc.yml with this content:

extends: actano

You might need enable the mocha context and allow having no-unused-expression in your test files by configuring this in a separate .eslintrc.yml inside your test directory:

env:
    mocha: true
rules:
    no-unused-expressions: off

Deviations from Airbnb

We are adopting most of the rules from Airbnb. Please check out their styleguide to get the full picture.

We do have different opinions on these topics:

Semicolons

They are not needed and code looks better without them. eslint: semi

Underscores in function names

We use leading underscores to express that a function is private. eslint: no-underscore-dangle

Constant conditions

When using generators, while (true) loops make sense. eslint: no-constant-condition

Function calls before definition

Classes read better if private methods are defined below their first usage. Tests read better when all helper functions are defined at the bottom. eslint: no-use-before-define

Iterators

We want to use generators. eslint: no-iterator

ForOfStatement

for .. of loops provide an easy way to iterate through iterators. eslint: no-restricted-syntax

Parentheses around function arguments in arrow functions

We always want to use parentheses around function arguments in arrow functions to make it obvious what the function arguments are, even if it is just one argument