런타임에 생산 및 개발 React 감지


110

현재 React 버전이 런타임에 개발인지 프로덕션인지 감지 할 수 있습니까? 다음과 같이하고 싶습니다.

if (React.isDevelopment) {
  // Development thing
} else {
  // Real thing
}

답변:


176

이는 .NET을 노출하여 빌드 도구 (webpack, browserify)로 작업을 수행하는 Node 방식을 에뮬레이션하는 것이 가장 좋습니다 process.env.NODE_ENV. 일반적으로 prod에서는 "production"으로 설정하고 dev에서는 "development"(또는 정의되지 않음)로 설정합니다.

따라서 코드는 다음과 같습니다.

if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') {
    // dev code
} else {
    // production code
}

설정 방법은 웹팩에서 envify 또는 환경 종속 변수 전달을 참조하십시오.


일단 내가 browserifyenvify.
pfhayes

5
process is not defined클라이언트에서.
trusktr

5
webpack과 같은 빌드 도구를 사용해야합니다.
David L. Walsh

9
create-react-app을 사용하는 경우 process.env.NODE_ENV개발 모드에서 "개발"됩니다.
Joseph238

3
@ Joseph238의 댓글에 추가-create-react-app을 process.env.NODE_ENV사용할 때 정의되며 앱의 어디서나 액세스 할 수 있습니다. 자세한 내용은 React 문서를 참조하십시오 .
Shaung Cheng 2019

9

헬퍼 파일 (Typescript)을 사용합니다.

import process from "process";

const development: boolean = !process.env.NODE_ENV || process.env.NODE_ENV === 'development';

export default function isDev(): boolean
{
    return development;
}

그런 다음 다른 곳에서 다음과 같이 사용합니다.

import isDev from "./helpers/DevDetect";

if (isDev())
{
    ...
}

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.