在运行时检测生产与开发 React

IT技术 javascript reactjs
2021-04-28 00:02:40

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

if (React.isDevelopment) {
  // Development thing
} else {
  // Real thing
}
3个回答

最好通过将process.env.NODE_ENV. 通常,您将在 prod 中将其设置为“生产”,在开发中将其设置为“开发”(或未定义)。

所以你的代码变成:

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

关于如何设置,请参阅envifyPassing environment-dependent variables in webpack

我使用了一个帮助文件(在 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())
{
    ...
}

我想从 index.html 访问它并需要一个不涉及弹出 webpack 或使用其他module配置它的解决方案,我想出了这个。

来源是上面大卫的回答在 html 文件中使用环境变量create-react-app 文档

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