客户端库的devise有什么意义?

为了解决来自Redux的警告背后的问题,我偶然发现了一些build议 , 这些build议解释了使用React或Redux为了生成针对生产使用进行了优化的构build,envifying是必要的步骤。 Envifying被解释为将诸如process.env.NODE_ENV类的节点特定的环境variablesreplace为诸如'production'类的实际值的process.env.NODE_ENV

接受envifying是必要的,上面的解释是真实的,它使我感到困惑,因为它似乎假设客户端库(如React和Redux)将包含特定于节点的环境variables。 是的,我知道这些库特别是build立同构/通用JavaScript应用程序的stream行,但会发现是令人惊讶的。 我是正确的理解这个? 如果是的话,那么我需要知道在节点外部使用process.env.NODE_ENV的模式的解释吗?

如果我正确理解了这个build议,那么就会提示如果我使用的是Webpack,那么我可能想使用像DefinePlugin这样的插件。

  new webpack.DefinePlugin({ "process.env.NODE_ENV": process.env.NODE_ENV, }), 

这似乎也要求我将NODE_ENVvariables设置为我想为我的客户端代码生成的目标环境。 这是非常奇怪的,因为我在构build服务器上设置一个环境variables,以反映实际代码在部署到的服务器上运行的环境。

所有这些让我觉得我在一般模式方面失去了一些东西。

相关信息:

  • https://github.com/reactjs/redux/issues/1029
  • https://github.com/reactjs/redux/issues/1298

您也可以为Web应用程序开发生产和开发版本/条件! 正如你所提到的,许多同构的JS框架使用它。

envify有助于以两种主要方式帮助使用process.env代码

  1. 删除任何需要的垫片来支持它 – Browserify有一个约2kb的自动化时钟,这可能很重要。
  2. 更好地缩小代码 – 当代码变得像if ("development" === "production")一个好的缩小器可以完全去除它

请记住,Webpack就是要改变你的(通常是客户端的)代码。 添加一些本质上的发现 – replaceprocess.env所有实例都在其用例中,并且可以在不引入新的API的情况下创build基于环境的行为。 在webpack.config设置它的值与在操作系统上设置环境variables没有什么不同。

Interesting Posts