Вы можете создать два файла .env, .env и .env.prod на уровне root и можете определить свои конкретные «переменные», относящиеся к определенной среде c в этих файлах env. Затем в вашем коде вы сможете получить к ним доступ через process.env.NODE_ENV
if(process.env.NODE_ENV === "production"){
//Execute this in production environment
var url= `${process.env.REACT_APP_AC_ORIGIN}/`;
url = url + ...,
}else{
//Execute this in dev environment
var url= `${process.env.REACT_APP_AC_ORIGIN}/`;
url = url + ...,
}
.env
REACT_APP_AC_ORIGIN=https://example1.com
.env.prod
REACT_APP_AC_ORIGIN=https://example2.com
Если вы имеют несколько сред, скажем, production, staging, QA и т. д., вы можете даже подумать о создании динамических c URL-адресов, предполагая, что к разным средам будут обращаться разные имена хостов в браузере, что-то вроде этого:
api-config. js
let backendHost;
const apiVersion = 'v1';
const hostname = window && window.location && window.location.hostname;
if(hostname === 'realsite.com') {
backendHost = 'https://api.realsite.com';
} else if(hostname === 'staging.realsite.com') {
backendHost = 'https://staging.api.realsite.com';
} else if(/^qa/.test(hostname)) {
backendHost = `https://api.${hostname}`;
} else {
backendHost = process.env.REACT_APP_BACKEND_HOST || 'http://localhost:8080';
}
export const API_ROOT = `${backendHost}/api/${apiVersion}`;
И затем вы можете импортировать его следующим образом:
import { API_ROOT } from './api-config';
function getUsers() {
return fetch(`${API_ROOT}/users`)
.then(res => res.json)
.then(json => json.data.users);
}
ИЛИ, вы можете определить свои переменные во время выполнения в различных средах.
$ REACT_APP_API_HOST=example.com yarn run build
# The resulting app would have
# process.env.REACT_APP_API_HOST === "example.com"
# process.env.NODE_ENV === "production"
Ссылка: https://daveceddia.com/multiple-environments-with-react/