meteor - 如何在 Meteor 构建期间访问客户端代码中的环境变量?

标签 meteor

相关:

我也知道 METEOR_SETTINGS

我有一个 Meteor 应用程序,它将为具有不同主题/功能的不同客户端部署。我想使用诸如 process.env.CLIENT 之类的环境变量并使用 if(process.env.CLIENT === 'foo') 之类的代码。在构建过程中,环境变量应该被替换,死代码消除将移除/剥离 if block 。这已经适用于 NODE_ENV

我不想发布某个客户不需要的代码,我也不想隐式公开其他客户的列表。如果我在运行时检查 Meteor.settings,这两种情况都会发生。我需要这在编译时发生。每个客户获得不同的构建。

如何将环境变量传递给客户端?其他人如何解决这个问题?当前客户端上的 process.env 是:

{"NODE_ENV":"development","TEST_METADATA":"{}"}

在其他构建工具中,我可以访问客户端上的所有 env 变量或具有特殊前缀(出于安全原因)的变量,例如 FOO_

最佳答案

Meteor 本身不支持创建多个不同的构建。我认为这也很不寻常。

但是,由于它是独立的进程,您可以使用类似于此的 bash 脚本自己构建对它的支持:

#!/bin/bash

FOO_VALUE=$1
echo "Using variable value $FOO_VALUE";

for file in $(find imports/ui/); do
  echo "Replacing special variables in $file"
  sed -i "s/FOO_CLIENT/$FOO_VALUE/g" $file;
done

DIR="build_$FOO_VALUE/"
mkdir -p $DIR
meteor build -d $DIR

关于meteor - 如何在 Meteor 构建期间访问客户端代码中的环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69910468/

相关文章:

javascript - 使用 Meteor 而不使用其模板库

javascript - 如何将 Bootstrap 日期选择器与 Meteor 一起使用

meteor .js : how to swap partial templates in and out of the main page

javascript - meteor mup 设置 mongo 失败 sudo : command not found

javascript - Meteor 应用程序呈现不稳定的 spiderable

javascript - meteor :使用 react 类中的方法

javascript - 如何列出 Meteor 应用程序中添加了哪些智能包?

javascript - 在 kadira :flow-router for meteor 上使用 react-router 有什么好处

javascript - 如何在 Meteor 中使用 PureRenderMixin (React js)

meteor - 向 Meteor 用户帐户添加更多字段