【问题标题】:How to separate development and production environments in shadow-cljs?如何在 shadow-cljs 中分离开发和生产环境?
【发布时间】:2020-04-26 04:34:58
【问题描述】:

我想为通过 Luminus 模板与 lein 应用程序一起运行的 shadow-cljs 分离开发​​和生产环境变量。我的生产环境是一个运行在 heroku 上的 docker 容器。 它应该以一种我可以导入地图的方式工作,比如配置,这样我就可以使用 (:some-key config) 或类似的方式访问密钥。

【问题讨论】:

    标签: clojurescript shadow-cljs


    【解决方案1】:

    内置支持分离发布和开发配置。

    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

    【讨论】:

    • 是否有推荐的方法来支持来自同一个 build-id 的多个环境(例如:app)。 IE。拥有以下环境“本地”、“测试”、“暂存”和“生产”,并为它们分别提供一个特定(不同)的后端 URL。我发现 github.com/mhuebert/shadow-env 但 TBH 似乎过于复杂。
    • 我的建议是将“运行时配置”排除在构建配置之外,而是在运行时提供。我不知道您在构建什么,但 :browser 目标例如可以从 HTML 或通过 XHR 请求获取配置。如果您喜欢这条路线,您可以通过shadow-cljs.github.io/docs/UsersGuide.html#shadow-env:closure-defines 将其放入构建中。
    猜你喜欢
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 2016-05-06
    • 2013-07-14
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    相关资源
    最近更新 更多