如何解释 Clojure/ClojureScript 项目上 :cljsbuild 的这种安排?以及如何为持续部署扩展它?

How to explain this arrangement for :cljsbuild on a Clojure/ClojureScript project? And how to extend it for Continuous Deployment?

提问人:Pedro Delfino 提问时间:1/6/2023 更新时间:1/6/2023 访问量:43

问:

我一直在处理这个名为clojurescript.csv的Clojure/Clojurescript项目。

文件上,有一种特殊的结构形式,我还没有看到。project.clj:cljsbuild

  :cljsbuild {:builds [{:id "whitespace"
                        :source-paths ["src" "test"]
                        :compiler {:output-to "target/js/whitespace.js"
                                   :optimizations :whitespace
                                   :pretty-print true}}
                       {:id "simple"
                        :source-paths ["src" "test"]
                        :compiler {:output-to "target/js/simple.js"
                                   :optimizations :simple
                                   :pretty-print true}}
                       {:id "advanced"
                        :source-paths ["src" "test"]
                        :compiler {:output-to "target/js/advanced.js"
                                   :optimizations :advanced
                                   :pretty-print false}}]

通常,我会看到一个简短的声明,例如:

:source-paths ["src"]

在此存储库上,方法不同。尽管每个“构建路径”都使用相同的路径,但有不同的 id 和优化路由。source-path

1 - 为构建提供这些不同的 ID 有什么意义?这有什么用呢?

我看不出来。

2 - 另外,我想扩展此文件以进行持续部署(在 GitHub 注册表上发布 Maven 包)。通常,在 下面,我会添加以下内容:source-paths

source-paths ["src"]
  ;; Change your environment variables (maybe editing .zshrc or .bashrc) to have:
  ;; export LEIN_USERNAME="pdelfino"
  ;; export LEIN_PASSWORD="your-personal-access-token-the-same-used-on-.npmrc"
  ;; LEIN_PASSWORD should use the same Token used by .npmrc
  ;; Also, do "LEIN_SNAPSHOTS_IN_RELEASE=true lein install" or edit your .zshrc:
  ;; export LEIN_SNAPSHOTS_IN_RELEASE=true
  :repositories {"releases"  {:url           "https://maven.pkg.github.com/tallyfor/*"
                              :username      :env/LEIN_USERNAME ;; change your env
                              :password      :env/LEIN_PASSWORD}}

  :pom-addition [:distribution-management [:repository [:id "github"]
                                           [:name "GitHub Packages"]
                                           [:url "https://maven.pkg.github.com/my-organization/repository-name"]]]

我应该添加 3 次吗?每个 ID 一个?

感觉很重复。

Build release clojurescript leiningen shadow-cljs

评论


答:

1赞 Thomas Heller 1/6/2023 #1

lein-cljsbuild允许您指定多个构建配置,如下所示。编译时,您可以提供要构建的构建的 ID。所以,不仅仅是你做.lein cljsbuild oncelein cljsbuild once advanced

这很常见,因此您可以拥有未优化的开发版本和优化的发布版本。通常,您在构建配置中会有更多的差异,例如。至少构建不包括源路径。由于这是一个库项目,因此这很好。作者可能希望轻松地使用不同的优化级别进行测试。:advancedadvanced"test"

:repositories并且是 中的顶级定义或别名/配置文件定义。它们不会进入配置映射。:pom-additionproject.clj:cljsbuild