如何将仅编译时的全局变量传递给我的代码?

问题描述 投票:-1回答:1

我想检查代码是否在开发模式下运行,然后例如将redux devtools增强器传递给redux存储。和其他类似情况。我知道我可以使用process.env.NODE_ENV,但是它太冗长了。我还可以在不同的模块中一次将其写入变量,然后将其导出。但是,对于我来说,仅导入一个变量并使用仅包含一个变量的模块是不合理的。我想要实现的完美解决方案是全局访问该变量,而无需在代码中导入或声明它,并且在编译时将其动态替换为仅字符串,即"development"而不是process.env.NODE_ENV。我想要的一个很好的例子是React代码库中的“伪全局” __DEV__变量。那么我该如何实现呢?预先谢谢你。

javascript reactjs webpack environment-variables
1个回答
0
投票

我找到了解决方案。我需要Webpack DefinePlugin。

// webpack.confg.js

const webpack = require('webpack');
//...

module.exports = (env, argv) => ({
  //...
  plugins: [
    //...
    new webpack.DefinePlugin({
      IS_DEV: argv.mode !== 'production'
    })
  ]
})
© www.soinside.com 2019 - 2024. All rights reserved.