godaddy-style
Official GoDaddy JavaScript styleguide. It includes eslint
packages for three use-cases and can be used as a standard in any new project.
eslint-config-godaddy
: Base configuration for non-React, ES6 JavaScript applicationseslint-config-godaddy-react
: Configuration for ES6 React JavaScript applicationseslint-config-godaddy-es5
: Configuration for React and non-React ES5 JavaScript applicationseslint-config-godaddy-react-flow
: Configuration for ES6 React JavaScript applications using Flow
There are many useful features:
- Standard. No configuration. – Stop worrying about style and focus on your work.
- Modern – Uses modern linting tools like
eslint
. - Auto-fix – Auto-fix is enabled by-default through in
eslint
. Many rules will fix themselves!
This styleguide is used by dozens of product teams at GoDaddy. Have a question or comment? Open an issue!
Installation
Install one of the provided packages depending on the kind of application you are developing:
# Default with ES6
npm i eslint-config-godaddy --save-dev
# OR (ES6 with React rules)
npm i eslint-config-godaddy-react --save-dev
# OR (legacy ES5 with React rules)
npm i eslint-config-godaddy-es5 --save-dev
# OR (ES6 with React and Flow rules)
npm i eslint-config-godaddy-react-flow --save-dev
Usage
There are two ways to use this styleguide depending on your own tooling preference: directly using pre-included binaries or running eslint
yourself with a custom .eslintrc
config.
1. Use the pre-included binaries.
These use exactly the configuration defined in the individual eslint-config-godaddy*
package with auto-fix enabled automatically.
{
"scripts": {
"lint": "eslint-godaddy files/ you/ want-to/ lint/"
}
}
.eslintrc.js
and run eslint
yourself:
2. Define your local module.exports = {
extends: 'godaddy',
rules: {
//
// Put any rules you wish to override here.
//
}
}
The --fix
option in eslint
is only available as a CLI option. Auto-fix will NOT be enabled unless you run eslint --fix
in your package.json
.
{
"scripts": {
"lint": "eslint --fix files/ you/ want-to/ lint/"
}
}
Additional Best Practices
This section is a place for additional best practices that may be useful but are not strictly enforced by this styleguide. Have something to add here? Great! Submit a PR.
React
FAQ
How do I override a specific rule ?
.eslintrc
file at the root of your project:
1. Add a {
"extends": "godaddy",
"rules": {
// Disable the 'max-params' rule
"max-params": 0
}
}
.eslintrc
file in your package.json
:
2. Add a param to specify the path of your own {
"scripts": {
"eslint": "eslint-godaddy -c .eslintrc lib/ test/",
}
}
How do I contribute?
Fork this repository and submit a pull request.
Proposed modifications to the style guide should modify the files in /dotfiles
before running npm run build
when submitting a pull request. This repository utilizes the fashion-show module to generate the /dist
files to be checked in.
I disagree with a specific rule
Great. We'd love to talk about it. Fork this repository and submit a pull-request.
Help! It's not working for me!
No problem. Reach out to us by opening an issue
Roadmap
- Consider other rules in an
eslint
only implementation:computed-property-spacing
generator-star-spacing
semi-spacing
block-spacing
- Continue to modularize the
eslint
rules. - Translate configuration files into more verbose written documentation.
- Add support for IDE formats (IntelliJ, Webstorm, Atom, Eclipse, Sublime, etc...)