Как внести в черный список определенные node_modules зависимостей моего пакета в упаковщике react-native?

Я объединяю оптимизированный процесс разработки с помощью response и response-native, который:

  • поощряет пакеты,
  • использует babel для преобразования es6 в js (он компилируется перед публикацией / установкой),
  • есть игровая площадка, позволяющая вам играть как с родным, так и с веб-интерфейсом компоненты.

С веб-частью все в порядке. Это нативный, который вызывает проблемы, и он связан с упаковщиком react-native.

Суть в следующем: если пакет либо связан через npm link, либо требуется напрямую с игровой площадки, как в require('../../') преобразователь зависимостей response-native будет вечно пытаться идентифицировать зависимости внутри node_modules моего пакета, в большинстве случаев он никогда не заканчивает это делать.

Временное решение, которое я нашел, - установить пакет на детской площадке, но это предполагает его повторную установку каждый раз, когда я делаю обновление, что не очень хорошо, потому что вы не можете сразу увидеть свои изменения (даже если бы это было автоматизировано. , это займет время).

Я считаю, что лучшим решением было бы попросить преобразователь зависимостей игнорировать те конкретные модули, которые мне не нужны (в основном те, что находятся в devDependencies!). Я попытался изменить response-native / packager / blacklist.js, добавив пути в этот список и даже поставив проверки на преобразователь зависимостей, но ничего из этого не сработает.

Может ли кто-нибудь с большим опытом работы с упаковщиком подсказать мне, как я буду делать прохождение преобразователя зависимостей? В качестве альтернативы было бы здорово, если бы упаковщик можно было разделить, а процесс преобразования оставить на выбор, но я не знаю, можно ли это сделать.


person Darío    schedule 05.05.2015    source источник


Ответы (1)


Я нашел следующее решение на основе комментария в default.config.js:

* If you need to override any of this functions do so by defining the file
* `rn-cli.config.js` on the root of your project with the functions you need
* to tweak.

Создайте rn-cli.config.js в корне вашего проекта со следующим содержимым:

var blacklist = require('react-native/packager/blacklist');

var config = {
  getBlacklistRE(platform) {
    return blacklist([
      /node_modules\/my-package\/excluded-dir\/.*/
    ]);
  }
};

module.exports = config;

Второй аргумент функции blacklist - это дополнительный список путей из черного списка, которые могут быть регулярными выражениями. См. react-native/packager/blacklist.js для получения дополнительных примеров.

person Albert    schedule 15.01.2016
comment
Можно ли игнорировать все файлы и папки для пути регулярного выражения? например, как бы вы игнорировали все, что ниже node_modules? - person Guy Segal; 04.07.2016
comment
Вы действительно не хотите «игнорировать» все файлы в node_modules. Тогда ваше приложение точно не будет работать. - person Albert; 17.07.2017
comment
По состоянию на react-native 46. Черный список перемещен в metro-bundler. Пример здесь: github.com/facebook/react-native/issues/ < / а> - person Shiki; 02.11.2017
comment
Этого нет в metro-bundler/src/blacklist.js - person arshbot; 22.01.2018
comment
Кто-нибудь знает, как это сделать для модулей в родственных папках (я использую Yarn Workspaces)? - person Adam Gerthel; 21.11.2020