npm install nodeos-standard
No decisions to make. No .eslintrc, .jshintrc, or .jscsrc files to manage. It just
works.
This module saves you (and others!) time in two ways:
- No configuration. The easiest way to enforce consistent style in your
project. Just drop it in.
- Catch style errors before they're submitted in PRs. Saves precious code
review time by eliminating back-and-forth between maintainer and contributor.
Install with:
```
npm install nodeos-standard
For a quick list of the rules, please refer to ESLint's recommended rules here.
The specific additions to these rules are as followed:
* semicolons are optional
* Unix style line breaks
- Install
- Usage
- What you might do if you're clever
- FAQ
- How do I ignore files?
- How do I hide a certain warning?
- I use a library that pollutes the global namespace. How do I prevent "variable is not defined" errors?
- Can I use a custom JS parser for bleeding-edge ES6 or ES7 support?
- What about Web Workers?
- What about Mocha, Jasmine, QUnit, etc?
- Is there a Git pre-commit hook?
- How do I make the output all colorful and pretty?
- Node.js API
- [standard.lintText(text, [opts], callback)](#standardlinttexttext-opts-callback)standard.lintFiles(files, [opts], callback)
- [](#standardlintfilesfiles-opts-callback)
- License
The easiest way to use NodeOS Standard Style to check your code is to install
it globally as a Node command line program. To do so, simply run the following
command in your terminal (flag -g installs standard globally on your system,
omit it if you want to install in the current working directory):
`bash`
npm install nodeos-standard --global
Or, you can run this command to install nodeos-standard locally, for use in your module:
`bash`
npm install nodeos-standard --save-dev
Node.js and npm are required to run the preceding commands.
After you've installed nodeos-standard, you should be able to use the nodeos-standard program. The
simplest use case would be checking the style of all JavaScript files in the
current working directory:
`bash`
$ nodeos-standard
Error: Use NodeOS Standard Style
lib/torrent.js:950:11: Expected '===' and instead saw '=='.
You can optionally pass in a directory (or directories) using the glob pattern. Be
sure to quote paths containing glob patterns so that they are expanded by nodeos-standard
instead of your shell:
`bash`
$ nodeos-standard "src/util//.js" "test//.js"
Note: by default nodeos-standard will look for all files matching the patterns:/.js, /.jsx.
1. Add it to package.json
`json`
{
"name": "my-cool-package",
"devDependencies": {
"nodeos-standard": "*"
},
"scripts": {
"test": "nodeos-standard && node my-tests.js"
}
}
2. Check style automatically when you run npm test
``
$ npm test
Error: Use NodeOS Standard Style
lib/torrent.js:950:11: Expected '===' and instead saw '=='.
3. Never give style feedback on a pull request again!
The paths node_modules/, *.min.js, bundle.js, coverage/, hidden.
files/folders (beginning with ), and all patterns in a project's root.gitignore file are automatically ignored.
Sometimes you need to ignore additional folders or specific minified files. To do
that, add a nodeos-standard.ignore property to package.json:
`json`
"nodeos-standard": {
"ignore": [
"**/out/",
"/lib/select2/",
"/lib/ckeditor/",
"tmp.js"
]
}FAQ
In rare cases, you'll need to break a rule and hide the warning generated by
nodeos-standard.
NodeOS Standard Style uses eslint under-the-hood and
you can hide warnings as you normally would if you used eslint directly.
To get verbose output (so you can find the particular rule name to ignore), run:
`bash`
$ nodeos-standard --verbose
Error: Use NodeOS Standard Style
routes/error.js:20:36: 'file' was used before it was defined. (no-use-before-define)
Disable all rules on a specific line:
`js`
file = 'I know what I am doing' // eslint-disable-line
Or, disable only the "no-use-before-define" rule:
`js`
file = 'I know what I am doing' // eslint-disable-line no-use-before-define
Or, disable the "no-use-before-define" rule for multiple lines:
`js`
/ eslint-disable no-use-before-define /
console.log('offending code goes here...')
console.log('offending code goes here...')
console.log('offending code goes here...')
/ eslint-enable no-use-before-define /
Some packages (e.g. mocha) put their functions (e.g. describe, it) on therequire
global object (poor form!). Since these functions are not defined or dnodeos-standard
anywhere in your code, will warn that you're using a variable that is
not defined (usually, this rule is really useful for catching typos!). But we want
to disable it for these global variables.
To let nodeos-standard (as well as humans reading your code) know that certain variables
are global in your code, add this to the top of your file:
``
/ global myVar1, myVar2 /
If you have hundreds of files, adding comments to every file can be tedious. In
these cases, you can add this to package.json:
`json`
{
"nodeos-standard": {
"globals": [ "myVar1", "myVar2" ]
}
}
nodeos-standard supports custom JS parsers. To use a custom parser, install it from npmnpm install babel-eslint
(example: ) and add this to your package.json:
`json`
{
"standard": {
"parser": "babel-eslint"
}
}
If you're using nodeos-standard globally (you installed it with -g), then you alsobabel-eslint
need to install globally with npm install babel-eslint -g.
Add this to the top of your files:
`js`
/ eslint-env serviceworker /
This lets nodeos-standard (as well as humans reading your code) know that self is a
global in web worker code.
To support mocha in your test files, add this to the beginning of your test files:
`js`
/ eslint-env mocha /
Where mocha can be one of jasmine, qunit, phantomjs, and so on. To see a
full list, check ESLint's
specifying environments
documentation. For a list of what globals are available for these environments,
check the
globals npm
module.
Funny you should ask!
`sh`
#!/bin/shEnsure all javascript files staged for commit pass standard code style
git diff --name-only --cached --relative | grep '\.jsx\?$' | xargs nodeos-standard
if [ $? -ne 0 ]; then exit 1; fi
The built-in output is simple and straightforward, but if you like shiny things,
install snazzy:
``
npm install snazzy
And run:
`bash`
$ nodeos-standard --verbose | snazzy
There's also standard-tap,
standard-json,
standard-reporter, and
standard-summary.
Lint the provided source text to enforce JavaScript Standard Style. An opts object may
be provided:
`js`
var opts = {
globals: [], // global variables to declare
parser: '' // custom js parser (e.g. babel-eslint)
}
The callback will be called with an Error and results object:
`js`
var results = {
results: [
{
filePath: '',
messages: [
{ ruleId: '', message: '', line: 0, column: 0 }
],
errorCount: 0,
warningCount: 0
}
],
errorCount: 0,
warningCount: 0
}
Lint the provided files globs. An opts object may be provided:
`js`
var opts = {
globals: [], // global variables to declare
parser: '', // custom js parser (e.g. babel-eslint)
ignore: [], // file globs to ignore (has sane defaults)
cwd: '' // current working directory (default: process.cwd())
}
The callback will be called with an Error and results` object (same as above).
MIT. Copyright (c) Feross Aboukhadijeh.