[Expo] Как указать другой конфиг при publish-е, если указываешь release-channel?

В React Native Expo, при публикации приложения, можно указать другой конфиг, используя опцию release-channel.

release-channel - это механизм, позволяющий управлять различными конфигурациями приложения. С помощью release-channel вы можете создавать разные версии вашего приложения с разными конфигурациями, такими как API-ключи, урлы серверов, разные отображаемые данные и т. д.

Чтобы указать другой конфиг при использовании release-channel, вам необходимо создать файл app.config.js на корневом уровне вашего проекта. В этом файле вы можете определить различные переменные окружения, которые будут использоваться при сборке и публикации вашего приложения.

Пример app.config.js:

export default {
  expo: {
    name: 'MyAwesomeApp',
    slug: 'my-awesome-app',
    releaseChannels: ['stable', 'beta'], // здесь определены ваши каналы релиза
    extra: {
      apiUrl: 'https://production-api.example.com', // конфигурация для канала 'stable'
    },
    hooks: {
      postPublish: [
        {
          file: 'sentry-expo/upload-sourcemaps',
          config: {
            organization: 'my-sentry-org',
            project: 'my-sentry-project',
            authToken: process.env.SENTRY_AUTH_TOKEN,
          },
        },
      ],
    },
  },
};

Используя extra внутри параметра expo, вы можете определить различные значения конфигурации для каждого канала релиза. В приведенном выше примере, приложение будет использовать значение apiUrl в зависимости от выбранного канала релиза.

После создания app.config.js, вы можете использовать команду expo publish для публикации вашего приложения. При этом expo будет использовать определенный конфиг для выбранного канала релиза.

Например, для публикации приложения с конфигурацией для канала 'beta', можно использовать следующую команду:

expo publish --release-channel beta

В результате приложение будет опубликовано с использованием конфигурации, заданной для этого канала релиза в app.config.js.

Это позволяет удобно управлять разными конфигурациями приложения, без необходимости изменять код приложения или выпускать новые версии приложения.