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

问题描述 投票:0回答:1

我一直在处理这个名为 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"]

在此存储库中,方法有所不同。虽然每个“构建路径”都使用相同的

source-path
,但有不同的 id 和优化路线。

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个回答
1
投票

lein-cljsbuild
允许您像这样指定多个构建配置。编译时,您可以提供要构建的构建的 id。所以,您不只是
lein cljsbuild once
,而是
lein cljsbuild once advanced

这很常见,因此您可以拥有未优化的开发版本和

:advanced
优化的发布版本。通常,您在构建配置方面会有更多差异,例如。至少
advanced
构建不包括
"test"
源路径。由于这是一个图书馆项目,所以这很好。作者可能想轻松地测试不同的优化级别。

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

© www.soinside.com 2019 - 2024. All rights reserved.