![](/img/trans.png)
[英]How to improve the workflow of editing dependencies and watching the changes on a main Clojure/ClojureScript dynamic web app project?
[英]How to explain this arrangement for :cljsbuild on a Clojure/ClojureScript project? And how to extend it for Continuous Deployment?
我一直在处理这个名为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 package)。 通常,在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一个?
感觉非常重复。
lein-cljsbuild
允许您像这样指定多个构建配置。 编译时,您可以提供要构建的构建的 ID。 因此,不要只执行 lein lein cljsbuild once
lein cljsbuild once advanced
。
这很常见,因此您可以拥有未优化的开发构建和:advanced
优化的发布构建。 通常你会在构建配置中有更多的差异,例如。 至少advanced
构建不包括"test"
源路径。 由于这是一个图书馆项目,所以这很好。 作者可能想轻松地测试不同的优化级别。
:repositories
和:pom-addition
是project.clj
中的顶级或别名/配置文件定义。 他们不会将 go 放入:cljsbuild
配置 map。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.