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

djh*_*987 11 clojure leiningen read-eval-print-loop

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

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

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

Art*_*ldt 12

leiningen示例项目中有几种方法可以执行此操作 ,我最喜欢的方法之一就是将您想要的代码放入默认的repl名称空间中

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

(ns user)
(def foo 42)
Run Code Online (Sandbox Code Playgroud)

并在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"])
Run Code Online (Sandbox Code Playgroud)

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

当您nrepl-jack-in从shell 运行表单emacs或"lein repl"时,您应该看到一个user>加载了代码的命名空间:

; nREPL 0.1.6
user> foo
42
Run Code Online (Sandbox Code Playgroud)

  • +1为优秀的链接.你能否在答案中包含为_any_项目执行此操作的方法(例如,使用'〜/ .lein/profiles.clj')并假设我没有使用emacs(即没有'nrepl-jack-in ',只是正常的终端屏幕)? (3认同)
  • 将此部分添加到anwser中,并且对于全局设置,最好在.lein/profiles.clj中的配置文件中使用:repl-options:init来定义用户命名空间. (2认同)