Исключить только каталог верхнего уровня в Metro Bundler, используя регулярные выражения черного списка? (BlacklistRE) - PullRequest
0 голосов
/ 25 апреля 2020

Я считаю, что это в первую очередь вопрос о регулярном выражении , но я могу ошибаться.


Допустим, я хотел исключить папку в моем проекте root с именем art.

Мое выходное регулярное выражение в CLI выглядит следующим образом:

blacklistRE: /(all|the|other|matchers|art\.*)$/

Но это приводит к ошибке:

Unable to resolve "art/core/color" from "..\..\node_modules\react-native\Libraries\ART\ReactNativeART.js"

Как исключить каталог art верхнего уровня, не затрагивая все дочерние каталоги?

Из документов комплекта

blacklistRE Тип: RegExp

RegEx, определяющий, какие пути игнорировать. https://facebook.github.io/metro/docs/configuration/#blacklistre

Код функции, которую я вызываю: Она короткая и автономная в этом файле, если кто-либо лучше меня регулярное выражение может иметь какое-либо понимание. https://github.com/facebook/metro/blob/8c53c38932c3e396109014ac707287fbdf2500d3/packages/metro-config/src/defaults/blacklist.js#L35 -L44

Мой полный код выглядит так:

const blacklist = require('metro-config/src/defaults/blacklist');

const regexStrings = [
  //  DEFAULTS
  '.*\\android\\ReactAndroid\\.*',
  '.*\\versioned-react-native\\.*',
  'node_modules[\\\\]react[\\\\]dist[\\\\].*',
  'node_modules[\\\\].cache[\\\\].*',
  'packages[\\\\]electron[\\\\].*',
  'node_modules[\\\\]electron.*',
  'website\\node_modules\\.*',
  'heapCapture\\bundle.js',
  '.*\\__tests__\\.*',
  '.*\\.git\\.*',
  // CUSTOM
  'art\\.*',
]

const constructBlacklistRE = () => {
  const formedRegexes = regexStrings.map(piece => new RegExp(piece));
  console.warn(formedRegexes);
  return blacklist([...formedRegexes]);
};

const config = {
  blacklistRE: constructBlacklistRE(),
}
...