.eslintignore is ignored by create-react-app? - node.js

I've placed a .eslintignore file in the root of my create-react-app installation, so I can ignore warnings from vendor libs.
It works fine if I run eslint from the commandline:
./node_modules/.bin/eslint src/js/vendor/jquery.js
...warnings ignored...
However running npm start and npm run build seem to ignore the ignore file.
How can I achieve what I want to do here - without editing individual vendor files to add eslint options?

This was fixed with this commit in CRA codebase: https://github.com/facebook/create-react-app/commit/6f5221c2d7df0b7a097cfdd461967422c3013e12#diff-dc0c4e7c623b73660da1809fc60cf6ba
Simply add EXTEND_ESLINT=true to a .env file in your project root.

YES .eslintignore is ignored. According to this issue.
CRA 1.x+ purposely does not support .eslintignore. Sorry!
Workarround
add /* eslint-disable */ to the beginning of the file.
move vendor files into public/ or use a NPM package.

Seems to work if I exclude complete directories from the .eslintignore in the root. Here is my .eslintignore
src/js/vendor/
src/vendor/

Related

run eslint in multi repository project

let's say, I have following project structure:
back/package.json
back/lib/Content/*.js
front/package.json
slices/budget/back/package.json
slices/budget/back/lib/Content/*.js
slices/budget/front/package.json
slices/accounting/back/package.json
slices/accounting/back/lib/Content/*.js
slices/accounting/front/package.json
how do I?
cd back && eslint ./lib/**/*.js ../slices/**/lib/Content/*.js
specifically, I want to
install eslint one time as devDependencies
somewhere in /back of root module
config eslint one time somewhere in /back/package.json:eslint key of root module
add eslint config in /back/package.json of root module just one time
eslint entire tree of modules
not in each slice seperatly
run from ci cd
so I need a way to run from /back
and later - maybe someway to respect eslint config hierarchy
not change project directory structure at all
what I receive
cd back && npm run lint
> back#1.0.0 lint
> eslint ../
Oops! Something went wrong! :(
ESLint: 8.23.1
ESLint couldn't find a configuration file
reason: https://eslint.org/docs/latest/user-guide/configuring/configuration-files#using-configuration-files
You can use the --ignore-path option to specify a file with patterns that should be ignored. The file should contain one pattern per line. For example, to ignore all files in the node_modules directory, you could create a .eslintignore file with the following contents:
node_modules
You can also use the --ignore-pattern option to specify a pattern that should be ignored. For example, to ignore all files in the node_modules directory, you could run:
eslint . --ignore-pattern node_modules
The error is probably because you haven't specified the eslint config file explicitly. To run eslint on all the modules, starting from the parent folder, run: eslint ../ -c .eslintrc.js (or whatever .eslintrc file you use in back). It seems like eslint is confused if it does not have the config file in the same directory it is running from hence you need to manually specify the path to it.
The correct way of solving this issue would be creating sharable config file with configuration you have in back right now:
module.exports = {
rules: {
semi: [2, "always"]
}
};
Then you publish it to public or private npm with a name #your-project/eslint-config and use it in .eslintrc.json that is the same in all your projects:
{
"extends": [
"#your-project/eslint-config"
]
}
This way gives you ability to configure CI in a simple and independent way if you have lots of repositories: just run eslint lib/*.js.
If you have all the repositories in one computer and want to lint all of them using one command, you can use one of my tools:
redfork, install eslint and redfork globally and run:
redfork 'eslint lib/*.js'
But maybe you need to have some changes in project structure.
runny, if you don't want to make changes in project structure, just add configuration file .runny.json:
{
"command": "eslint lib/*.js",
"directories": [
"~/one",
"~/two",
"~/three"
]
}
It will run the same command for any directory you need.
I had a similar issue and the following has solved my problem.
I guess you haven't specified the eslint config file explicitly.
To run eslint on all the modules
run: eslint ../ -c .eslintrc.js
It seems like eslint is confused if it does not have the config file in the same directory it is running from, so you need to manually specify the path to it.
no real answer, except to create .eslintignore, .eslintrc, package.json at project root

Why "npm run lint" is pointing to .eslintrc in parent folder not current?

cd ~me/olc/componment1/src
there's a .eslintrc.
npm install
node_modules now contains eslint-config-airbnb-base as our .eslintrc extends from airbnb-base.
npm run lint
it failed, saying "was referenced from the config file ~me/olc/.eslintrc".
So how come it's not using the .eslintrc from current folder, but from ../../.eslintrc ?
How to fix this pls ?
By default, ESLint will look for configuration files in all parent folders up to the root directory.
ESLint will stop looking in parent folders once it finds a configuration with "root": true.
https://eslint.org/docs/user-guide/configuring/configuration-files#cascading-and-hierarchy
BTW why ppl are giving negative points instead of helping ? any reason my question is not clear enough ?

Can we share an .eslintignore file between repos

I currently have a shared eslint config that's kept in the npm module #my-scope/eslint-config. This is working well, but I was hoping that including the .eslintignore file in that npm module would also be shared but it doesn't look like it is shared. What's the best way to share this .eslintignore file between projects?
Have you explicitly added the .eslintignore file to the files array of your package.json?
https://docs.npmjs.com/files/package.json#files
Have you tried specifying an --ignore-path pointing to your other .eslintignore? As described here:
http://eslint.org/docs/user-guide/configuring#using-an-alternate-file
I replaced my .eslintignore file with the ignorePatterns in the config file. And then I share the config file between repositories.
Definitely cleaner than pointing to node_modules folder.
Documentation: https://eslint.org/docs/latest/use/configure/ignore#ignorepatterns-in-config-files

Configuring .eslintrc

I ran the command ./node_modules/.bin/eslint --init after installing the eslint package. But the first line after setting up the configuration which is module.exports gives the following warning
file will be ignored by default.
I'm unable to implement my custom rules.Need assistance with configuring my path.
The message is saying that ESLint will not lint the contents of .eslintrc.js by default. It'll still read the configuration just fine. If you want ESLint to check the code style of .eslintrc.js, you can create a file named .eslintignore with the contents !.eslintrc.js.

eslint ignore project .eslintrc

I'm working on a project that has an .eslintrc file checked in to source control at the root of the project.
The problem is that it has custom dependencies and when I use a tool to run my linting (syntastic with Vim) it fails. The dependencies are custom and I wish to skip running them in my editor.
I want to use another .eslintrc file, rather than the one which is in the root of the project.
How can I ignore <projectroot>/.eslintrc and instead use /custom/path/.eslintrc?
A glance at the ESLint docs tells us that you want to pass the --no-eslintrc option to make it ignore the .eslintrc in the project root and --config /custom/path/.eslintrc to make it use that file instead.
The Syntastic README says you can configure the arguments given to eslint like so:
let g:syntastic_javascript_eslint_args = "--no-eslintrc --config /custom/path/.eslintrc"

Resources