Marlint
JavaScript strict code style with ES6+ES7, React, and Flowtype (inspired from XO)
Enforce strict code style. Never discuss code style on a code review again
No decision-making. No .eslintrc
, .jshintrc
, .jscsrc
to manage. It just works!
Basic feature
- ES6+ES7 support
- Flowtype compatible (will not throw error on flow annotation)
- React (and JSX) support (with sane rules, like no implicit React dependency on JS file with JSX syntax)
Code style
- 2 Space indentation
- Semicolons
- Single-quotes
- No unused variables
- Space after keyword
if (condition) {}
- Always
===
instead of ==
Any of these can be overridden if necessary.
Check out an example and the ESLint rules.
Install
$ npm install --global marlint
Usage
$ marlint --help
Usage
$ marlint [<file|glob> ...]
Options
--compact Compact output
--stdin Validate code from stdin
--env Environment preset [Can be set multiple times]
--global Global variable [Can be set multiple times]
--ignore Additional paths to ignore [Can be set multiple times]
Examples
$ marlint
$ marlint index.js
$ marlint *.js !foo.js
$ marlint --env=node --env=mocha
Tips
Put options in package.json instead of using flags so other tools can read it.
Config
You can configure some options in Marlint by putting it in package.json
:
{
"name": "your-project",
"marlint": {
"envs": ["node", "mocha"]
}
}
Globals and rules can be configured inline in files.
envs
Type: array
Default: ['node']
Which environments your code is designed to run in. Each environment brings with it a certain set of predefined global variables.
globals
Type: array
Additional global variables your code accesses during execution.
ignores
Type: array
Some paths are ignored by default. Additional ignores can be added here.
rules
Type: object
Override any of the default rules. See the ESLint docs for more info on each rule.
Please take a moment to consider if you really need to use this option.
FAQ
Why not ESLint / Standard / XO?
This project aims to simplify code convention across Traveloka javascripts code by just typing marlint
and be done. No decision-making, no config. Standard is way too opinionated and the rules is not meant to be changed. We could use XO, but we have to add support for ES6+ES7, React and Flowtype everytime we add new JavaScript project and that means duplicate config file. This tool is created to solve that problem.
Editors
Related
License
MIT © Traveloka