import-js/eslint-plugin-import

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

Ouverte

#2 800 ouverte le 16 juin 2023

 (6 commentaires) (4 réactions) (0 personne assignée)JavaScript (1 549 forks)batch import
help wanted

Métriques du dépôt

Stars
 (5 938 étoiles)
Métriques de merge PR
 (Merge moyen 138j 22h) (3 PRs mergées en 30 j)

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.

Guide contributeur