eslint
A fully pluggable tool for identifying and reporting on patterns in JavaScript.
ESLint - Pluggable JavaScript linter a pluggable and configurable linter tool for identifying and reporting on patterns in javascript. maintain your code quality with ease.
I need to run Eslint on Java. The only solution I thought about is to "browserify" the node-js module, and try to run it on Rhino.
Can anyone suggest a better way?
Source: (StackOverflow)
Can I split the ESLint rules by glob pattern?
I mean case like this:
{
"*.server.js": { /* rules set for the server JS */ },
"*.client.js": { /* rules set for the client JS */ },
"*.special.js": { /* some very special JS */ },
"*.js": { /* all other JS with its own rules not intersecting with others */ }
}
There is the jshint-groups wrapper for JSHint. Is there something like this for ESLint?
Source: (StackOverflow)
I'm using Vim with the syntastic plugin and eslint.
When I save a JavaScript file, I can see errors come up just fine, but I can't get the warnings to show.
Here's what I have in my .vimrc:
let g:syntastic_javascript_checkers = ['eslint']
I installed eslint with:
npm install eslint -g
I'm running Linux Mint 17
How do I get warnings to appear?
Source: (StackOverflow)
I have the following code in a Javascript file:
/* exported something */
function something() {}
The something
function is not used in the file because it is called from a Html form submission.
When the linter runs, es-lint
in my case, I receive a no-unused-vars
message.
I expected that exported
comment would fix this, but this is not the case.
Am I doing something wrong? Am I missing something?
Source: (StackOverflow)
I'm using React and Eslint with eslint-plugin-react.
I want to disable the prop-types rule in one file.
var React = require('react');
var Model = require('./ComponentModel');
var Component = React.createClass({
/* eslint-disable react/prop-types */
propTypes: Model.propTypes,
/* eslint-enable react/prop-types */
render: function () {
return (
<div className="component">
{this.props.title}
</div>
);
}
});
Source: (StackOverflow)
I'm trying to use npm as a task runner/build tool after reading this article:
How to use npm as a build tool
and while I'm having some success, I'm stuck on one thing. When running a command-line global tool like JSLINT, JSHINT, or ESLINT, npm will always show the Exit 1 code in the console window:

As you can see, the command works fine, but npm sees it as an error and displays the error log info. Is this normal and/or is there a way to turn it off for specific commands?
Additional info: this is script block in my package.json config:
"scripts": {
"start": "node ./src/server/index.js",
"test": "",
"lint": "eslint index.js"
}
then from npm cli I type:
npm run lint
This will execute the script found in the package.json file with the label: 'lint'
Source: (StackOverflow)
I'm adding watchify
to our build process but I want to put a precondition to watchify running, and that is that the file(s) that changed pass our linting step (which is using ESLint
).
I was thinking of doing this:
function runBrowserify(watch){
var babel = babelify.configure({
optional: ['es7.objectRestSpread']
});
var b = browserify({
entries: './app/main.js',
debug: true,
extensions: ['.jsx', '.js'],
cache: {},
packageCache: {},
fullPaths: true
})
.transform(babel);
if(watch) {
// if watch is enable, wrap this bundle inside watchify
b = watchify(b);
b.on('update', function(ids) {
//run the linting step
lint(ids);
//run the watchify bundle step
gutil.log(gutil.colors.blue('watchify'), 'Started');
bundleShare(b);
});
b.on('time', function (time) {
gutil.log(gutil.colors.blue('watchify'), 'Finished', 'after', gutil.colors.magenta(time), gutil.colors.magenta('ms'));
});
}
bundleShare(b);
}
function bundleShare(b) {
b.bundle()
.pipe(source('main.min.js'))
.pipe(gulp.dest('./dist'));
}
function lint(glob) {
return gulp.src(glob)
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failOnError());
}
The problem is that the linting step is async so it doesn't finish before the bundling would be done (it also throws so I probably need to use plumber
to stop it from terminating the watch
step).
So how would I make a precondition before I call bundleShared
?
Source: (StackOverflow)
We are trying to apply the guidelines listed in John Papa's AngularJS Style Guide.
One of the rules which we started to follow is Defer Controller Logic:
Defer logic in a controller by delegating to services and factories.
Why?: Logic may be reused by multiple controllers when placed within a
service and exposed via a function.
Why?: Logic in a service can more easily be isolated in a unit test,
while the calling logic in the controller can be easily mocked.
Why?: Removes dependencies and hides implementation details from the
controller.
This is something we've violated in the past by putting data retrieval logic into controllers instead of isolating it in a service.
Now I'd like to make the rule as strict as possible. Ideally, I would like angular to throw an error if one of the configured services is passed as a dependency to a controller. Is it something that can be solved on the angular level, or I should try solving it separately - for example, statically with a custom ESlint
rule?
Would appreciate any insights or hints.
In particular, the following controller violates the rule, because it uses $http
service directly:
function OrderController($http, $q, config, userInfo) {
var vm = this;
vm.checkCredit = checkCredit;
vm.isCreditOk;
function checkCredit() {
var settings = {};
return $http.get(settings)
.then(function(data) {
vm.isCreditOk = vm.total <= maxRemainingAmount;
})
.catch(function(error) {
});
};
}
Also, let me know if I'm getting overly concerned/crazy about the code quality :)
Source: (StackOverflow)
I'm new to eslint and it's spewing out a ton of errors telling me to use doublequotes:
error Strings must use doublequote
That's not my preference. I've got an .eslintrc file set up with the basics:
{
"env": {
"node": 1
}
}
I'd like to configure it for single quotes.
Source: (StackOverflow)
I'd like to lint the files in my rails project (ideally, in my editor while making edits) via eslint, but I am currently unable to lint files that are pre-processed with ERB.
How can I include *.js.erb files in the linting process?
Source: (StackOverflow)
In Atom Editor I installed the following plugins
- linter
- linter-eslint
It seems they don't recognize the JSX syntaxis.
I have it working on the command line but had to use other plugins like esprima-fb
and eslint-plugin-react
. Looks like there are no such plugins for Atom Editor and would like to know if anyone of you knows a way to hack around this.
Source: (StackOverflow)
At work we use a different syntax checker than I do when working on open source. Is there a way to have Syntastic
specify a default checker, and change checkers if an rc
file is found at the project root?
Example: if .eslintrc
is found use eslint
. If no .eslintrc
is found, use standard
.
Thanks!
edit: also opened an issue on scrooloose/syntastic.
Source: (StackOverflow)
I personally love ternary operators, and in my humble opinion, they make complicated expressions very easy to digest. Take this one:
word = (res.distance === 0) ? 'a'
: (res.distance === 1 && res.difference > 3) ? 'b'
: (res.distance === 2 && res.difference > 5 && String(res.key).length > 5) ? 'c'
: 'd';
However in our project's ESLINT rules nested ternary operators are forbidden, so I have to get rid of the above.
I'm trying to find out alternatives to this approach. I really don't want to turn it into a huge if / else statement, but don't know if there's any other options.
Source: (StackOverflow)
According to the docs plugins should work if they are npm modules named "eslint-plugin-"
Here's a plugin that follows that pattern. Source is here.
So, we make a new project
md foo
cd foo
npm init
... answer questions ..
npm install --save-dev eslint
npm install --save-dev eslint-plugin-require
echo "define(function(){});" > test.js
echo "{\"rules\":{\"require\": 2}}" > conf.json
node node_modules/eslint/bin/eslint.js -c conf.json --plugin eslint-plugin-require test.js
produces
~/node_modules/eslint/lib/eslint.js:569
throw new Error("Definition for rule '" + key + "' was not
^
Error: Definition for rule 'require' was not found.
change the config to
echo "{\"rules\":{\"eslint-plugin-require\": 2}}" > conf.json
nor
echo "{\"rules\":{\"require-define\": 2}}" > conf.json
nor
echo "{\"rules\":{\"require-require-define\": 2}}" > conf.json
nor
echo "{\"rules\":{\"eslint-plugin-require-define\": 2}}" > conf.json
nor
echo "{\"rules\":{\"eslint-plugin-require-require-define\": 2}}" > conf.json
does not fix it
How do I use locally installed eslint plugins?
Source: (StackOverflow)