Код для конкретной платформы с Webpack — React Native

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

С React Native у нас есть расширения файлов .ios и .android. С каждым из них за нас справится упаковщик React Native. Теперь я использую веб-пакет (потому что я люблю мучить себя), и я не могу заставить его правильно разрешать расширения имен файлов. Используя сервер React Native Webpack (для которого, похоже, не было решения для этого), он возвращает ошибку, похожую на эту: введите здесь описание изображения

Это связано с тем, что файл .ios и .android вызывается как: require('Spinner'); Упаковщик React Native разрешит эти файлы, а webpack — нет. Мне нужно смешать эти два, чтобы заставить это работать, или теперь есть волшебное решение, когда мне вообще не нужно использовать веб-пакет.

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


person Mike Huebner    schedule 10.03.2016    source источник
comment
Пробовали ли вы искать вдохновение в каком-либо шаблоне веб-пакета? Вот один. github.com/jhabdas/react-native-webpack-starter-kit   -  person Chris Geirman    schedule 10.03.2016
comment
Это то, что я сейчас использую в качестве вдохновения, и у него тоже нет решения.   -  person Mike Huebner    schedule 10.03.2016


Ответы (1)


Позвольте мне поделиться своим вдохновением :) Вы можете разделить конфигурацию веб-пакета на две конфигурации с одной точкой входа в каждой. Затем укажите расширения .ios.js и .android.js в разделе resolve:

entry: {
  'index.ios': ['./src/main.ios.js']
},
...
resolve: {
   extensions: ['', '.js', '.ios.js', ...] // '.android.js' will be in other config
}

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

person Bob Sponge    schedule 10.03.2016
comment
Так что это определенно хорошая идея! Но я использую RNWS, что означает, что мне нужно будет указать, собираю ли я iOS или Android, я не мог бы сделать и то, и другое, если я не создам экземпляр 2 серверов веб-пакетов, когда это работает. И почему-то мне кажется, что это не лучшая идея. - person Mike Huebner; 10.03.2016