检测生产与开发在运行时发生反应

时间:2016-02-17 23:28:46

标签: javascript reactjs

是否有可能在运行时检测当前版本的React是开发还是生产?我想做这样的事情:

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

3 个答案:

答案 0 :(得分:74)

最好通过展示process.env.NODE_ENV来模拟Node使用构建工具(webpack,browserify)进行操作的方式。通常,您将其设置为" production"在prod和"开发" (或未定义)在开发中。

所以你的代码变成了:

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

有关如何设置的信息,请参阅envifyPassing environment-dependent variables in webpack

答案 1 :(得分:3)

我想从index.html访问此文件,并希望找到一种不涉及弹出webpack或使用其他模块进行配置的解决方案,而我想到了这一点。

来源是David's answer abovecreate-react-app documentation for using environment variables in the html file

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

答案 2 :(得分:1)

我使用帮助文件(在打字稿中):

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())
{
    ...
}