【问题标题】:How to use process.env variables in reason with webpack如何在 webpack 中合理使用 process.env 变量
【发布时间】:2018-12-19 19:01:49
【问题描述】:

这是交易:使用 webpack,您可以提供环境变量(通过 DefinePluginEnvironmentPlugin),以便它们可以被 process.env.MY_VAR 之类的代码使用。在构建时将它们与实际值内联是可行的。

但我无法尝试在 Reason 中使用它们。 Bucklescript 有Node.Process 模块,但是当你使用Node.Process##env 时,它会被转译为

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

所以它不会被 webpack 拾取并内联。那么我可以用什么来实现它将被转换为var myVar = process.env.MY_VAR

【问题讨论】:

    标签: webpack reason bucklescript


    【解决方案1】:

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

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

    这比%raw 有几个好处:

    • external 将检查它是否是语法上有效的全局标识符。使用 %raw,一切顺利,但无法保证它会生成正确的 JavaScript。
    • externals 是内联的。这意味着它将评估它的使用位置,以防不同模块中的值发生变化或不同。它还可以防止间接全局变量发生突变。

    可能这些都不重要,但我看不出使用%raw 比使用external 有什么好处,所以最好正确使用。

    【讨论】:

    • 如果您将DefinePlugin 与优化插件一起使用,此版本实际上有好处。如果 Webpacks 优化引擎通过 DefinePlugin 知道 process.env.NODE_ENV 的值,它将完全忽略或解开诸如 if (process.env.NODE_ENV == "production") 之类的东西。只有在不引入中间变量(如%bs.raw 解决方案所做的那样)时,它才能做到这一点。
    猜你喜欢
    • 2019-04-18
    • 2018-10-02
    • 1970-01-01
    • 2019-02-22
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2019-12-18
    相关资源
    最近更新 更多