@silvermine/eslint-config
Version:
JS Code Standards for all SilverMine projects - eslint enforcement
107 lines (77 loc) • 4.79 kB
Markdown
# Silvermine ESLint Rules
[](https://www.npmjs.com/package/@silvermine/eslint-config)
[](./LICENSE)
[](https://travis-ci.org/silvermine/eslint-config-silvermine)
[](https://david-dm.org/silvermine/eslint-config-silvermine)
[](https://david-dm.org/silvermine/eslint-config-silvermine#info=devDependencies&view=table)
[](https://conventionalcommits.org)
## What?
Shareable [ESLint](http://eslint.org/) configuration for all Silvermine projects.
## Why?
Because we need it. Whitespace errors are evil. As are the other hundreds of
types of errors this protects us from.
## Running ESLint
It is recommended to run ESLint via a NPM script in `package.json` with the command
`eslint .` for projects that use this configuration.
Example:
```json
{
"scripts": {
"eslint": "eslint ."
}
}
```
## Other Configuration Files Available
In addition to the ESLint rules, this package provides configuration for the following:
* [EditorConfig](https://editorconfig.org/)
* Provides a default set of editor configuration values to use in Silvermine projects
* Usage: Symlink the .editorconfig file to the root of your project and use the
appropriate extension for your editor.
* `ln -s ./node_modules/@silvermine/eslint-config/.editorconfig`
* [commitlint](https://conventional-changelog.github.io/commitlint/)
* Provides linting for commit messages of Silvermine projects
* Usage: Add a `commitlint.config.js` file to the root of the project with the
following and then set up commitlint in the project:
```javascript
'use strict';
module.exports = {
extends: [ '@silvermine/eslint-config/commitlint' ],
};
```
## Notes on Semantic Versioning
See the [notes we made in eslint-plugin-silvermine][semver-notes] regarding our use of
version numbers here. The same decisions made for that repo also apply to this repo,
basically for the same reasons.
[semver-notes]: https://github.com/silvermine/eslint-plugin-silvermine/#note-on-semantic-versioning
## What version should I use?
When choosing which version of this config to use, consider the following:
* v2.x.x is the newest branch of our config, which allows for ES2015+ features, as well
as TypeScript linting. On new projects, we recommend using this branch of the config.
* v1.x.x is the legacy version of our eslint config. This should primarily be used in
legacy es5 projects and with node version < 8.10.0. It does not allow for many
es2015+ features, such as spread/rest operators and arrow functions.
* The v1.x.x branch is not recommended for use in new projects and will only be
minimally updated with bug fixes to support legacy code.
## Updating ESLint
Updating ESLint in this project requires multiple steps across both this project and
[@silvermine/eslint-plugin](https://github.com/silvermine/eslint-plugin-silvermine):
1. Open a PR to update ESLint in @silvermine/eslint-plugin
* Note: Linting in the @silvermine/eslint-plugin PR will likely fail because
@silvermine/eslint-plugin's version of @silvermine/eslint-config is incompatible with
the new version of ESLint. That's ok. We will fix it soon in a subsequent step.
2. After the PR from step 1 is merged, update @silvermine/eslint-plugin in
@silvermine/eslint-config using a `git+https` + git hash URL. The git hash should point
to the commit in @silvermine/eslint-plugin where you updated ESLint.
3. Update ESLint in @silvermine/eslint-config. Open a PR that contains this update and
the @silvermine/eslint-plugin update from step 2.
* Note: All of the linting and tests in this build should pass.
4. Publish a new version of @silvermine/eslint-config to the NPM registry
5. Update @silvermine/eslint-config in @silvermine/eslint-plugin to the version that was
just published
* Note: All of the linting and tests in this build should now pass.
6. Publish a new version of @silvermine/eslint-plugin to the NPM registry
7. Update @silvermine/eslint-plugin in @silvermine/eslint-config using the version that was
just published
## License
This software is released under the MIT license. See [the license
file](LICENSE) for more details.