问题 如何在leiningen repl中预加载clojure文件?


当我启动clojure REPL时,我有一些我想预先加载的clojure函数。除非您在REPL的上下文中使用它们,否则这些函数没什么用处。

如果它有帮助,我通常使用leiningen为我开始一个clojure REPL。

我如何告诉clojure(或leiningen,如果它不能通过平坦的clojure获得)为我预加载包含这些定义的clojure文件?


10720
2017-08-31 19:20


起源



答案:


有几种方法可以做到这一点 莱宁根样本项目 我最喜欢的方法之一就是将你想要的代码放在默认的repl命名空间中

/path/to/project/dev/user.clj:

(ns user)
(def foo 42)

并在project.clj文件中添加这样的一行:

(defproject hello "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.5.1"]]
  :source-paths ["dev"])

这清楚地表明这是针对dev的,同时仍将其加载到默认命名空间中。

当你跑步 nrepl-jack-in 形成emacs或“lein repl”组成shell,你应该受到欢迎 user> 加载代码的命名空间:

; nREPL 0.1.6
user> foo
42

12
2017-09-01 02:40



+1为优秀的链接。你能否在答案中加入一种方法来做到这一点 任何 项目(例如,使用'〜/ .lein / profiles.clj')并假设我没有使用emacs(即没有'nrepl-jack-in',只是正常的终端屏幕)? - djhaskin987
将此部分添加到anwser中,并且对于全局设置,最好在.lein / profiles.clj的配置文件中使用:repl-options:init来定义用户命名空间。 - Arthur Ulfeldt
我认为如果你把额外的东西更合适 :source-paths 在个人资料中输入。该 :dev 我认为简介会特别合适。答案就是答案,无论代码是什么 dev 同时仍然包含在项目中。 - Geoff
我必须包括 "src" 太: :source-paths ["src" "dev"] 否则我可以加载我的命名空间。 - Kris


答案:


有几种方法可以做到这一点 莱宁根样本项目 我最喜欢的方法之一就是将你想要的代码放在默认的repl命名空间中

/path/to/project/dev/user.clj:

(ns user)
(def foo 42)

并在project.clj文件中添加这样的一行:

(defproject hello "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.5.1"]]
  :source-paths ["dev"])

这清楚地表明这是针对dev的,同时仍将其加载到默认命名空间中。

当你跑步 nrepl-jack-in 形成emacs或“lein repl”组成shell,你应该受到欢迎 user> 加载代码的命名空间:

; nREPL 0.1.6
user> foo
42

12
2017-09-01 02:40



+1为优秀的链接。你能否在答案中加入一种方法来做到这一点 任何 项目(例如,使用'〜/ .lein / profiles.clj')并假设我没有使用emacs(即没有'nrepl-jack-in',只是正常的终端屏幕)? - djhaskin987
将此部分添加到anwser中,并且对于全局设置,最好在.lein / profiles.clj的配置文件中使用:repl-options:init来定义用户命名空间。 - Arthur Ulfeldt
我认为如果你把额外的东西更合适 :source-paths 在个人资料中输入。该 :dev 我认为简介会特别合适。答案就是答案,无论代码是什么 dev 同时仍然包含在项目中。 - Geoff
我必须包括 "src" 太: :source-paths ["src" "dev"] 否则我可以加载我的命名空间。 - Kris