.jshintrc
{ // http://jshint.com/docs/options/
"bitwise" : true, // prohibits the use of bitwise operators | ^ &
"camelcase" : true, // all variable names must use either camelCase style or UPPER_CASE with underscores
"curly" : true, // always put curly braces around blocks in loops and conditionals
"eqeqeq" : true, // prohibits the use of == and != in favor of === and !==
"es3" : false, // does not need to conform to ECMAScript 3 standards
"forin" : true, // requires all `for in` loops to filter object's items (obj.hasOwnProperty(i))
"freeze" : true, // prohibits overwriting prototypes of native objects
"funcscope" : false, // prohibits variable being used out of scope
"globals" : {
"Promise" : true // Prevents Promise being redeclared (bluebird)
},
"globalstrict" : false, // Prevents 'use strict' errors. 'use strict' will be required in our case
"immed" : false, // Immediately invoked functions must be wrapped in parentheses (for readability)
"indent" : 2, // 2 space indent
"iterator" : false, // Suppresses warnings about the __iterator__ property
"latedef" : "nofunc", // Makes you declare your variables at the top of the scope they're used in, but not the functions
"maxcomplexity" : 7, // forces functions to have less complex paths
"maxdepth" : 3, // forces nested blocks to only be a certain number of blocks deep
"maxerr" : 100, // maximum number of errors jshint will report before giving up
"maxlen" : 80, // maximum line length
"maxparams" : 3, // forces functions to have a maximum number of parameters
"maxstatements" : 10, // maximum number of statements in a function
"newcap" : true, // must use capitalized constructors with the `new` keyword
"noarg" : true, // mustn't use `arguments.callee` or `arguments.caller`
"noempty" : true, // blocks shouldn't be empty
"nonbsp" : true, // prohibits use of non breaking whitespace characters
"nonew" : true, // prohibits use of `new Constructor()` without assigning it to anything
"notypeof" : false, // prohibits use of invalid `typeof` values
"quotmark" : "single", // must use single quotes all the time
"shadow" : "outer", // Checks variable declaration scope. Also checks outer scope for already declared variables
"undef" : true, // prohibits the use of explicitly undeclared variables
"unused" : true, // warns about declared but unused variables
"trailing" : true,
"asi" : false, // You don't need semicolons. But we're going to require them for consistency. http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leaders-regarding
"boss" : false, // Cannot use assignment operators in conditional statements, except when wrapped in parantheses
"debug" : false, // Warns you about forgotten debugger statements
"eqnull" : true, // Can use == null to see if something is null or undefined
"esnext" : false, // Don't use es6 stuff (yet)
"evil" : false, // don't use eval. it's evil. or can be
"expr" : false, // Tolerate `ExpressionStatement` as Programs.
"lastsemic" : false, // Must use semicolons at the end of one liners for consistancy
"laxbreak" : false, // Tolerate unsafe line breaks e.g. `return [\n] x` without semicolons
"laxcomma" : false, // Don't do comma first
"loopfunc" : false, // Don't define a function inside of a loop, unless you know about closures
"moz" : false, // We're not developing specifically for Firefox
"multistr" : false, // Don't use multiline strings
"plusplus" : false, // you can use i++ or i--.
"proto" : false, // Don't use .__proto__
"scripturl" : false, // Don't use script urls
"strict" : true, // Must use strict mode
"sub" : false, // prefer dot notation if it can be used. test['name'] === test.name
"supernew" : false, // Don't use new function () {} or new Object
"validthis" : false, // Don't use "this" incorrectly
"withstmt" : false, // Don't use with
"node" : true, // Node env
"mocha" : true // For tests
}