如何在 webpack 中合理使用 process.env 变量

How to use process.env variables in reason with webpack

事情是这样的:使用 webpack,您可以提供环境变量(通过 DefinePluginEnvironmentPlugin),这样它们就可以被像 process.env.MY_VAR 这样的代码使用。它们会在构建时内联实际值。

但我在 Reason 中尝试使用它们时遇到了问题。 Bucklescript 有 Node.Process 模块,但是当你使用 Node.Process##env 时它被转译为

var process = require("process")
var myVar = process.env["MY_VAR"]

所以它不会被 webpack 提取和内联。那么我可以用什么来实现它会被 traspiled 到 var myVar = process.env.MY_VAR?

我实际上不认为这是 %raw 的一个很好的用例,而是宁愿只使用普通的 external:

[@bs.val] external token : string = "process.env.TOKEN";

这比 %raw 有几个好处:

  • external 将检查它是否是语法上有效的全局标识符。使用 %raw,任何事情都会发生,并且不能保证它会产生正确的 JavaScript.
  • externals 是内联的。这意味着它将评估它的使用位置,以防值发生变化或在不同模块中有所不同。它还可以防止间接全局变量发生突变。

None 这些可能都很重要,但我没有看到使用 %rawexternal 有任何好处,所以最好还是正确地使用它。