Реагируйте на Собственное приложение белых меток

#android #ios #react-native #babeljs #mobile-development

Вопрос:

Я пытаюсь реализовать приложение с белой меткой в react native, где я мог бы создать и объединить приложение без импорта «всего» из проекта.

Например, у меня может быть assets_app1 папка весом 10 МБ и assets_app2 весом 1 МБ. В конце концов я всегда получаю 11 МБ, независимо от того, какой проект я собираю и объединяю для производства.

Я проверил несколько источников о том, как создавать white-label flavours на targets Android и iOS соответственно, посмотрел babel-плагин-модуль-распознаватель, но не смог найти и создать идеальное решение.

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

что-то вроде этого:

 const brandPath = `./App/brands/${process.env.APP_BRAND}`;

console.log(`Bundling for the brand: ${process.env.APP_BRAND}`);

module.exports = function(api) {
  api.cache(true);
  return {
    presets: ['babel-preset-expo'],
    plugins: [
      ['module-resolver', {
        root: ['./App', brandPath, './App/brands/default']
      }]
    ]
  };
};

 

Тем не менее, я получаю набор всех файлов, включенных в проект, даже если я использую «require (» ./reallyLargeImage.png») где-то в одном проекте. Он всегда будет одного и того же размера.

Существует ли какое-либо решение для белой маркировки приложения RN, которое могло бы создавать и объединять только необходимые ресурсы для конкретной конфигурации? Является ли цель/ложь единственным способом?

Ответ №1:

Для этого есть плагин babel: babel-plugin-rn-white-label , он выглядит старым, но это что-то. Вы можете добраться отсюда.

Если вы решите использовать этот плагин, вы можете специализировать ресурсы для каждого приложения. Например, у вас есть 3 приложения (a, b, c), в каждом приложении вы хотите использовать другое изображение, просто сохраните изображения как image.a.jpg, image.b.jpg, image.c.jpg. Вавилон автоматически выбирает при создании приложения. Допустим, если a и b используют одно и то же изображение, вы можете использовать image.jpg и image.c.jpg потому что image.jpg будет использоваться по умолчанию.

Я не проверял это, но попробовать стоило.