ESLint是否会默认自动排除node_modules目录下的文件?
ESLint自动忽略node_modules文件夹的对应规则说明
- 这个现象是ESLint内置硬编码的默认忽略规则导致的,和你有没有手动配置.eslintignore、有没有在.eslintrc里写ignorePatterns规则没有关系。
- 从ESLint v4.10.0版本开始,
/node_modules/*、/bower_components/*两个路径就被设为了默认全局忽略项,只要你没有手动配置规则强制检查这两个目录下的文件,ESLint在扫描匹配到的文件列表时,会自动过滤掉这两个目录下的所有文件,不会执行lint检查。 - 你查阅CLI相关文档没有找到对应描述,是因为这部分规则的说明放在了ESLint文档中「配置忽略文件」的专门章节,没有放在命令行参数的说明页面中。
- 注意不要和shell通配符的行为混淆:很多人会误以为
**/*.js这个通配符本身不会遍历node_modules目录,实际上多数常用shell(比如开启globstar配置的Bash 4+、Zsh)下,**是会递归遍历所有层级子目录的,node_modules下的js文件本来会被通配符匹配到。过滤这些文件的动作是ESLint拿到shell传入的文件路径列表之后,通过内置规则完成的,不是shell层面的跳过。 - 这个默认规则有一个特殊逻辑:如果你在执行ESLint命令时,显式把node_modules下的具体文件路径作为参数传入(比如直接写
./node_modules/.bin/eslint ./node_modules/xxx/index.js),默认忽略规则不会生效,ESLint会直接检查这个指定文件;只有当文件是被glob通配符匹配扫描出来、不是你手动显式传入的具体路径时,才会被默认规则过滤。
如果你确实需要检查被默认忽略的文件,可以在执行命令时加上
--no-ignore参数跳过所有忽略规则(包括默认忽略、自定义忽略规则),但日常开发场景下不推荐这么做:node_modules中都是第三方依赖代码,不需要做lint校验,强制检查会大幅拖慢ESLint执行速度,还会抛出大量和业务代码无关的报错。
内容的提问来源于stack exchange,提问作者u936293
相关产品推荐
相关产品推荐

