@ojolabs/linter v1.0.11
linter
Shared linting rules and executable for all javascript applications
Configuring
This project is based on eslint. To take advantage of this linter:
- Add this project as a dev dependency
- Add a lint command to
package.jsonfor project linting - Add a lint check to
shippable.ymlto get linting during CI - Add an
.eslintrcconfiguration file to add custom rules, inherit from a specific config file in this project, and (as a pre-requisite) to get live-linting in your editor
At a minimum, have the following in your package.json file:
"scripts": {
"lint": "linter",
...
},
"devDependencies": {
"@ojolabs/linter": "git://github.com/ojolabs/linter.git",
...
}Configuring eslint
Consult the eslint documentation for information on how the various configuration options work, especially the rules page. This project provides some base javascript rules and both a node and browser (react) specific configuration file. These can be inherited from as a starting point by extending one of the existing configuration files (see eslint directory) to your projects .eslintrc file:
{
"extends": ["./node_modules/@ojolabs/linter/node"]
}Note the above assume you have arleady required this project as a dev-dependency and run npm install. Also note that as the linter descends directories, if it finds additional .eslintrc configuration files, they will over-ride preceding files. This can be used for e.g. a test directory where you want test specific environments or rules to be enforced.
Integrating with Shippable builds
When run, the linter looks for the XUNIT_LINTER_FILE environment variable. If found, it will output linting results to the specific file in a junit xml format. In your shippable yaml file:
...
env:
- XUNIT_LINTER_FILE=shippable/testresults/lint.xml
...
script:
- npm run lintIntegrating with Browserify / package.json based build
You can integrate eslint into the build directly by using the eslintify browserify transform. Note this is for development support, and will not break the build if linting fails (shippable integration is required for that)
npm install --save-dev eslintify
Then in your package.json:
...
browserify": {
"transform": [
"eslintify",
"babelify",
"envify"
]
},
...Live Linting
You can configure eslint to lint your code as you develop, providing inline editor errors. To do so, you'll need to install eslint globally. For projects that require plugins (like react), you'll also need to globally install that. e.g.:
sudo npm install -g eslint eslint-plugin-react
Afterwards, consult your editor specific docs for setting up live linting:
- Sublime Text
- Vim
- IDEA (todo)
Allegedly, installing eslint_d can significantly improve live linting performance.