问题标签 [boot-clj]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
280 浏览

clojure - 引导:在处理程序中从类路径提供非根目录 + cljs 重新加载

我试图将 leiningen 项目转换为引导:https ://github.com/borkdude/lein2boot 。

它使用服务任务来服务处理程序。处理程序提供 API 并提供文件。使用重新加载任务,我希望能够重新加载 javascript。

我需要将我的 html 和 javascript 放在资源目录的根目录(在本例中为“assets”),因为重新加载任务使用完整资源路径 ( /main.js) 将更改的 javascript 发送到浏览器。这意味着我还必须服务于我的类路径的根:(resources "/" {:root ""})在 Compojure 中。这样做的问题是任何人都可以从我的整个类路径中请求任何文件:不好。

当我将 javascript 重新定位到assets/public/main.js公共目录并从中提供服务时(resources "/" {:root "public"}),可以在“/main.js”处请求文件,但重新加载任务会通知浏览器从“/public/main.js”重新加载文件,这会导致404。

我怎么解决这个问题?

0 投票
2 回答
1435 浏览

clojure - 我如何使用 Boot (clojure) 添加 github/local 依赖项

例如,我想分叉一些现有的 clojar,扩展它并在我的项目中使用。

如果没有推送到 clojars/maven,我怎么能做到这一点?

对这两个选项都感兴趣:链接到 github 和本地路径。

谢谢!

UPD

我想要的是包含一些现有的 Clojure 项目作为依赖项,类似于 ruby​​ gem 允许的。这可以通过 Boot 实现吗?或者我总是需要编译成java?

0 投票
1 回答
1373 浏览

clojure - Clojure:在特定命名空间中启动 repl

我已经安装了 boot-clj,并且希望能够在外部编辑器中编辑 .clj 文件,并单独运行一个命令行 REPL,我可以从中调用我在 .clj 文件中更改的函数。不需要特殊的重新加载命令。

另一件事是我不想手动键入命令来包含命名空间 - 我只想运行一个脚本,将我带入命名空间,这样我就可以立即调用现有函数。

文件名:

文件中的一些内容:

我想直接进入 REPL 并(my-range 0 3)查看它是否产生我想要的结果。

这是什么设置?我需要运行的脚本文件是什么样的?

我目前的理解是答案看起来像这样:

0 投票
1 回答
602 浏览

maven - 将 GPG 加密的凭据(或特定环境变量)与 boot-clj 和 s3-wagon-private 一起使用

在引导 wiki ( https://github.com/boot-clj/boot/wiki/S3-Repositories ) 中,它指定您可以内联 AWS 凭证以将 S3 用作 Maven 存储库。从安全角度来看,这是次优的,因为我不想签入 AWS 凭据,即使它们的权限有限。

在带有 s3-wagon-private 的 leiningen 中,您可以通过环境变量指定访问密钥和密钥:

或者,从特定的环境变量,使用:

或者使用 GPG 加密~/.lein/credentials.clj.gpg文件:

boot 中的push任务似乎支持 GPG 加密凭据以部署到 Clojars(https://github.com/boot-clj/boot/wiki/Deploying-with-Boot)中$BOOT_HOME/credentials.clj.gpg。所以,一般来说,boot 似乎支持 GPG。

当我尝试任一环境变量方法时,我收到以下错误,表明不支持这种形式的凭据:

GPG 方法似乎无法获取凭据,并导致 S3 出现 403 错误。

我想我可以(System/getenv "AWS_ACCESS_KEY_ID")用来直接读取存储库映射中的 env 变量,但如果有一个受支持的机制,我宁愿使用它。如果可以从安全角度以及设置多个 S3 Wagon 而无需处理环境变量,那么 GPG 加密凭证将是我们的理想解决方案。

我在 OS X El-Capitan 上使用最新的 Boot (2.4.2)。GPG 可以在命令行上成功解密凭证,即使在安静模式下(gpg --quiet --batch --decrypt ~/.boot/credentials.clj.gpg有效)。将凭证直接放在存储库映射中确实有效,并且相同的credentials.clj.gpg文件在 lein 中有效。不过,我是 Boot 新手,所以我可能遗漏了一些明显的东西!

0 投票
1 回答
763 浏览

clojure - 使用 boot-clj 创建战争

我想创建一个可以使用 tomcat 部署的战争。使用lein uberwar做的工作很好,但是对启动做同样的事情似乎不起作用。我可以构建一个 jar 并运行它,但是战争失败了

2015 年 12 月 9 日上午 12:15:31 org.apache.catalina.loader.WebappClassLoader validateJarFile 信息:validateJarFile(/var/lib/tomcat7/sites/geeknow.guru/DEBUG##0.1.7/WEB-INF/lib/ javax.servlet-api-3.1.0.jar) - jar 未加载。请参阅 Servlet 规范 3.0,第 10.7.2 节。违规类:javax/servlet/Servlet.class

我正在使用以下 build.boot

0 投票
2 回答
177 浏览

firefox-addon-sdk - 使用 Boot 时将已编译的 Cljs 构建到/移动到任意目录的惯用方法是什么?

我正在使用 ClojureScript、Boot 和 Boot-Cljs 构建 Firefox 附加组件。Firefox 的 Add-On SDK 采用了一定的目录结构;就我而言,我需要一个project-root/data目录来存放我的contentScriptFile.

我应该如何构建一个 ClojureScript 文件,该文件存在project-root/src/foo/core.cljs并输出或移动到project-root/data? 我尝试使用boot sift --move无济于事(我承认我不完全理解此任务应该如何工作,需要哪些参数等),使用main.cljs.edn清单并调整其位置,,:asset-path:output-path无济于事。

我对 Boot 很感兴趣,想弄清楚这一点,但我不得不承认,我在这方面浪费了很多时间(而且看起来我并不孤单)。鉴于我已经有一个简单的、可工作的 Clojure 脚本,它直接调用 ClojureScript 编译器 - 并使用它:output-to来完成我需要的工作 - 我可能会恢复使用这种方法来完成这个实验。

0 投票
1 回答
435 浏览

maven - 如何将非 Maven 代码添加到 boot-clj/boot 中?

我通过在 App Engine 上开发 Clojure工作。然后我尝试使用boot复制相同的功能。但是,我不知道如何在启动项目中包含 Google App Engine(非 Maven)代码。感谢任何帮助我度过这一点的帮助。

以下所有代码都托管在这里

这是当前工作project.clj

这是我正在处理的当前损坏build.boot的,基于以前的project.clj.

它失败了

显然,boot不知道如何获取com.google.appengine代码。在lein我的世界里,lein localrepo install ...我经历了一些关于如何将非 Maven 项目安装到我的本地存储库中的步骤(在文章中)。似乎 App Engine Jar 应该仍然在我的本地存储库中,但启动似乎没有看到它们。如何使 appengine jar 在我的引导项目中可见?

0 投票
2 回答
248 浏览

clojure - 无法启动远程 ClojureScript bREPL(它显示“无法解析符号...”)

ClojureScript 菜鸟在这里。

我正在使用 Boot 遵循以下 ClojureScript 教程:https ://github.com/magomimmo/modern-cljs/blob/master/doc/second-edition/tutorial-02.md#browser-repl-brepl

boot repl -c我可以按照它并通过运行andn then将命令行/引导 repl 连接到我的站点(start-repl),但我想使用基于 REPL 的更丰富的文本编辑器连接到该站点。

我已经为 atom 文本编辑器下载了ProtoRepl 。我可以通过给它repl的主机+端口来很好地连接到repl,但是当我尝试运行(start-repl)它时会抛出错误:

似乎我缺少一些 ClojureScript/boot 特定的导入,但我不确定要添加什么或如何添加它。

以下是一些额外的调试信息:

在工作启动 repl 连接上运行 (def start-repl) 与失败的 proto-repl 连接:

引导复制:

原型复制:

0 投票
1 回答
119 浏览

vim - 有没有办法忽略 boot-clj 的监视任务中的文件?

我在 clojurescript 项目中使用引导,到目前为止开发流程非常顺利。但是有一件事让我很困扰。

我使用 VIM 作为我的编辑器,它为它的缓冲区创建临时文件,~最后命名的著名文件。每次我编辑文件时,vim 都会为其缓冲区创建临时文件,并且当我使用内置watch的引导任务时,即使我没有保存任何真实文件,它也会触发重新加载。

这是我的启动任务定义:

我想将watch任务配置为忽略任何以结尾的文件,~因此只有在我保存一些有意义的文件时才会触发重新加载。可能吗?还有其他解决方案吗?

0 投票
1 回答
210 浏览

clojure - boot.properties 中需要哪些信息?

我想为使用 Boot 的项目指定 Clojure 版本。根据Boot Wiki ,执行此操作的方法是在我的项目根目录BOOT_CLOJURE_VERSION中的文件中提供一个值。boot.properties所以我这样做了:

它似乎工作得很好:

但是,同一个 wiki 页面特别说明要创建这样的boot.properties文件:

这在开头添加了两行,对我来说看起来像是注释,最后一行指定了引导版本。我为我的项目指定引导版本没有问题,但是 wiki 页面听起来好像是必需的:

注意:使用boot.properties文件时,您还必须将项目固定到特定的引导版本,因为文件必须指定这两个变量。

我有点困惑为什么页面特别说boot.properties在省略这三行时添加这三行似乎不会导致任何问题。此外,如果我使用修订控制,我认为不需要在boot.properties. 可以省略这些行吗?如果不是,为什么需要它们?