如何在 webpack 中合理使用 process.env 变量
How to use process.env variables in reason with webpack
事情是这样的:使用 webpack,您可以提供环境变量(通过 DefinePlugin
或 EnvironmentPlugin
),这样它们就可以被像 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.
external
s 是内联的。这意味着它将评估它的使用位置,以防值发生变化或在不同模块中有所不同。它还可以防止间接全局变量发生突变。
None 这些可能都很重要,但我没有看到使用 %raw
比 external
有任何好处,所以最好还是正确地使用它。
事情是这样的:使用 webpack,您可以提供环境变量(通过 DefinePlugin
或 EnvironmentPlugin
),这样它们就可以被像 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.external
s 是内联的。这意味着它将评估它的使用位置,以防值发生变化或在不同模块中有所不同。它还可以防止间接全局变量发生突变。
None 这些可能都很重要,但我没有看到使用 %raw
比 external
有任何好处,所以最好还是正确地使用它。