为了解决来自Redux的警告背后的问题,我偶然发现了the advice,这解释了在使用React或Redux生成为生产使用而优化的构建时,环境是必要的步骤。 Envifying被解释为使用process.env.NODE_ENV
等实际值替换节点特定环境变量(例如'production'
)的过程。
接受这种环境是必要的并且上述解释是正确的,它让我感到困惑,因为它似乎假设客户端库(如React和Redux)将包含特定于节点的环境变量。是的,我知道这些库特别适合构建同构/通用JavaScript应用程序,但会发现令人惊讶。我是否正确理解了这一点?如果是这样,我需要知道在节点之外使用process.env.NODE_ENV
的模式的解释吗?
如果我理解正确的建议,那么如果我使用Webpack,我可能会想要使用像DefinePlugin
这样的插件。
new webpack.DefinePlugin({
"process.env.NODE_ENV": process.env.NODE_ENV,
}),
这似乎还要求我将NODE_ENV变量设置为我想为我的客户端代码生成的构建的目标环境。这是非常奇怪的,因为我在构建服务器上设置了一个环境变量,以反映实际代码在部署到的服务器上运行的环境。
这一切让我觉得我在一般模式方面缺少某些东西。
相关信息:
答案 0 :(得分:4)
您也可以拥有网络应用的制作和开发版本/条件!正如您所提到的,许多同构JS框架都在使用它。
envify用于帮助使用process.env
if ("development" === "production")
时,一个好的缩小器可以完全剥离它请记住,Webpack就是要改变你的(通常是客户端)代码。添加一些基本上可以找到 - 替换process.env
的所有实例的内容完全在其用例中,并允许您创建基于环境的行为而无需引入新的API。在webpack.config
中设置其值与在操作系统上设置环境变量没有什么不同。