import-js/eslint-plugin-import

`no-restricted-paths` should support negated glob pattern

Aberta

#2.800 aberto em 16 de jun. de 2023

 (6 comentários) (4 reações) (0 responsável)JavaScript (1.549 forks)batch import
help wanted

Métricas do repositório

Stars
 (5.940 estrelas)
Métricas de merge de PR
 (Mesclagem média 138d 22h) (3 fundiu PRs em 30d)

Description

Bug Description

We cannot use a negated glob pattern (e.g. '!dir_to_exclude/**') in zone.target, zone.from, and zone.except.

Impact

This prevents us from specifying a target that matches anything except certain files or directories. Fixing the bug should help address the use case requested in #2497 as well.

Root Cause

This is due to path.resolve is used to resolve the glob patterns like a relative path (e.g. '!dir_to_exclude/**' becomes '/home/project_dir/!dir_to_exclude/**'), making it invalid.

Suggested Fix

I'd love to suggest the following fix:

  1. When constructing a minimatch matcher, instead of resolving the glob patterns as paths, the glob patterns shall be passed as is to minimatch, and
  2. When matching a path, instead of using the absolute path, the path should be resolved as a relative path to the base path specified in base.

Guia do colaborador