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

如何在leiningen repl中预加载clojure文件?,clojure,leiningen,read-eval-print-loop,Clojure,Leiningen,Read Eval Print Loop,我有一些clojure函数,我希望在启动clojure REPL时预先加载这些函数。除非您在REPL的上下文中使用这些函数,否则这些函数没有多大用处 如果有帮助,我通常使用leiningen为我启动clojure REPL 我如何告诉clojure(或leiningen,如果无法通过flat clojure获得)为我预加载包含这些定义的clojure文件?中介绍了几种方法 我最喜欢的方法之一是将默认repl命名空间中的代码放入 /路径/to/project/dev/user.clj: (ns u

我有一些clojure函数,我希望在启动clojure REPL时预先加载这些函数。除非您在REPL的上下文中使用这些函数,否则这些函数没有多大用处

如果有帮助,我通常使用leiningen为我启动clojure REPL


我如何告诉clojure(或leiningen,如果无法通过flat clojure获得)为我预加载包含这些定义的clojure文件?

中介绍了几种方法 我最喜欢的方法之一是将默认repl命名空间中的代码放入

/路径/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的,同时仍将其加载到默认名称空间中

当您在emacs中运行
nrepl jack或在shell中运行“lein repl”时,您应该会收到一个
user>
名称空间,其中加载了您的代码:

; nREPL 0.1.6
user> foo
42

+1为优秀的链接。您是否可以在回答中为任何项目提供这样做的方法(例如,使用“~/.lein/profiles.clj”),并假设我没有使用emacs(即,没有“nrepl插孔”,只有正常的终端屏幕)?将这一部分添加到anwser中,对于这种全局设置,在.lein/profiles.clj中的概要文件中使用:repl options:init可能比使用定义用户名称空间更合适。我认为,如果在概要文件中添加额外的
:source path
项,则更合适。我认为,
:dev
配置文件将特别合适。答案是,无论什么代码在
dev
下,但仍然始终包含在项目中。我也必须包含
“src”
:源路径[“src”“dev”]
,否则我可以加载我的命名空间。