【发布时间】:2020-04-26 04:34:58
【问题描述】:
我想为通过 Luminus 模板与 lein 应用程序一起运行的 shadow-cljs 分离开发和生产环境变量。我的生产环境是一个运行在 heroku 上的 docker 容器。 它应该以一种我可以导入地图的方式工作,比如配置,这样我就可以使用 (:some-key config) 或类似的方式访问密钥。
【问题讨论】:
我想为通过 Luminus 模板与 lein 应用程序一起运行的 shadow-cljs 分离开发和生产环境变量。我的生产环境是一个运行在 heroku 上的 docker 容器。 它应该以一种我可以导入地图的方式工作,比如配置,这样我就可以使用 (:some-key config) 或类似的方式访问密钥。
【问题讨论】:
内置支持分离发布和开发配置。
https://shadow-cljs.github.io/docs/UsersGuide.html#_release_specific_vs_development_configuration
shadow-cljs 不支持您要求的“导入地图并按键访问”,而是由库提供。
我也不建议使用环境变量来配置构建。
另请注意,shadow-cljs 配置与构建时间有关。如果您想在运行时访问“环境”,则根本不会使其成为构建的一部分。假设您创建了一个在node 中运行的:node-script 构建。您可以在运行时通过普通代码访问js/process.env.SOME_ENV。
【讨论】:
:browser 目标例如可以从 HTML 或通过 XHR 请求获取配置。如果您喜欢这条路线,您可以通过shadow-cljs.github.io/docs/UsersGuide.html#shadow-env 和:closure-defines 将其放入构建中。