import-js/eslint-plugin-import

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

開放

#2,800 建立於 2023年6月16日

 (6 則留言) (4 個反應) (0 位負責人)JavaScript (1,548 個分叉)batch import
help wanted

倉庫指標

星標
 (5,940 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

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.

貢獻者指南