Mevcut React sürümünün çalışma zamanında geliştirme mi yoksa üretim mi olduğunu tespit etmek mümkün mü? Bunun gibi bir şey yapmak istiyorum:
if (React.isDevelopment) {
// Development thing
} else {
// Real thing
}
Yanıtlar:
Bu, en iyi şekilde, derleme aracınızla (web paketi, browsererify) bir şeyler yapmanın Düğüm yolunu taklit ederek yapılır process.env.NODE_ENV
. Tipik olarak, üretimde "üretim" ve geliştirmede "geliştirme" (veya tanımlanmamış) olarak ayarlamanız gerekir.
Böylece kodunuz şöyle olur:
if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') {
// dev code
} else {
// production code
}
Nasıl kurulacağını öğrenmek için, kıskanmaya veya web paketinde ortama bağımlı değişkenleri aktarma konusuna bakın.
process is not defined
istemcide.
process.env.NODE_ENV
geliştirme modunda "geliştirme" olacaktır.
process.env.NODE_ENV
sizin için tanımlanacak ve uygulamanızın herhangi bir yerinden ona erişebileceksiniz. Ayrıntılı bilgi için React belgelerine bakın .
Yardımcı dosya kullanıyorum (Typescript'te):
import process from "process";
const development: boolean = !process.env.NODE_ENV || process.env.NODE_ENV === 'development';
export default function isDev(): boolean
{
return development;
}
Sonra başka bir yerde bunu böyle kullanıyorum:
import isDev from "./helpers/DevDetect";
if (isDev())
{
...
}
Buna index.html'den erişmek istedim ve web paketini çıkarmayı veya ek modüllerle yapılandırmayı içermeyen bir çözüm istedim ve bunu buldum.
Kaynaklar, David'in yukarıdaki yanıtı ve html dosyasında ortam değişkenlerini kullanmak için uygulama oluşturma-tepki verme belgeleridir.
if ( ! '%NODE_ENV%' || '%NODE_ENV%' === 'development') {
// dev code
} else {
// production code
}
browserify
veenvify
.