Editor Integrations

Atom

linter-js-standard-engine is an Atom plugin that supports some of
the more popular standard-engine implementations out of the box. It detects them
by scanning through the dependencies of the project that you are editing.
You can use it with any other implementation through configuration in the
projects package.json file.

Engine Features

Ignoring Files

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 minfied files. To do that, add
a ignore property to package.json:

"pocketlint":{// this key should equal the value of cmd in options.js

"ignore":[

"**/out/",

"/lib/select2/",

"/lib/ckeditor/",

"tmp.js"

]

}

Some files are ignored by default:

varDEFAULT_IGNORE=[

'**/*.min.js',

'**/bundle.js',

'coverage/**',

'node_modules/**',

'vendor/**'

]

You can disable these default ignores by setting noDefaultIgnore option to true.

Hiding Warnings

Since standard-engine uses eslint under-the-hood, 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:

$ pocketlint --verbose

Error: Live by your own standards!

routes/error.js:20:36: 'file' was used before it was defined. (no-use-before-define)

Defining Globals in a project's package.json

standard-engine will also look in a project's package.json and respect any global variables defined like so:

{

"pocketlint":{// this key should equal the value of cmd in options.js

"globals":[// can be a string or an array of strings

"myVar1",

"myVar2"

]

}

}

You may use global as an alias for globals (just don't specify both).

Loading ESLint plugins in a project's package.json

Additional ESLint plugins can be specified like so:

{

"pocketlint":{// this key should equal the value of cmd in options.js

"plugins":[// can be a string or an array of strings

"flowtype"

]

}

}

You may use plugin as an alias for plugins (just don't specify both). Plugins must be installed (example: npm install eslint-plugin-flowtype or globally: npm install eslint-plugin-flowtype -g).

Loading additional environments in a project's package.json

Additional environments can be specified like so:

{

"pocketlint":{// this key should equal the value of cmd in options.js

"envs":["browser","mocha"]

}

}

envs can be a string, an array of strings, or an object. In the latter case the keys are used as the environment name, but falsy values mean the environment is not actually loaded. You cannot unload environments by setting a falsy value.

You may use env as an alias for envs (just don't specify both).

Custom JS parsers for bleeding-edge ES6 or ES7 support?

standard-engine supports custom JS parsers. To use a custom parser, install it from npm
(example: npm install babel-eslint) and add this to your package.json:

{

"pocketlint":{// this key should equal the value of cmd in your options.js

"parser":"babel-eslint"

}

}

If you're using your custom linter globally (you installed it with -g), then you also need to
install babel-eslint globally with npm install babel-eslint -g.

Custom options

You can provide a parseOpts() function in the options.js exports:

var eslint =require('eslint')

var path =require('path')

var pkg =require('./package.json')

module.exports={

// homepage, version and bugs pulled from package.json

version:pkg.version,

homepage:pkg.homepage,

bugs:pkg.bugs.url,

eslint: eslint,// pass any version of eslint >= 1.0.0

cmd:'pocketlint',// should match the "bin" key in your package.json

tagline:'Live by your own standards!',// displayed in output --help

eslintConfig:{

configFile:path.join(__dirname,'eslintrc.json')

},

parseOpts:function(opts,packageOpts,rootDir){

// provide implementation here, then return the opts object (or a new one)

return opts

}

}

This function is called with the current options object (opts), any options extracted from the project's package.json (packageOpts), and the directory that contained that package.json file (rootDir, equivalent to opts.cwd if no file was found).

Modify and return opts, or return a new object with the options that are to be used.

The following options are provided in the opts object, and must be on the returned object: