如何向LightTable添加一个库,这样当我使用instarepl时,它总是会有所说的库?

时间:2014-10-13 17:12:07

标签: clojure leiningen lighttable

我想将整个LightTable中的某些库依赖项添加到一起,这样当我在学习新东西时,我不需要创建一个新项目。

假设我想要始终访问这些库:math.combinatorics和math.numeric-tower。

Lighttable似乎是在调用leinigen的repl,所以我真的需要在那里添加一些东西吗?

请参阅https://github.com/LightTable/LightTable/blob/master/project.clj

2 个答案:

答案 0 :(得分:1)

它将召唤莱宁根的一名代表。您可以将它们添加到Leiningen Profile(〜/ .lein / profiles.clj),而不是将依赖项添加到LightTable中。 该文件可能与您的依赖项看起来像这样:

{:user {:dependencies [[math.combinatorics "x.x.x"]
                       [math.numeric-tower "x.x.x"]]}}

一般来说,这不是一个好主意。这将是一个全球性的事情,将来可能会给你带来麻烦。如果您创建了一个应用程序,您可能会发现这两个库在他们不适合其他人或不同的计算机时可用。

更好的选择是使用Leiningen创建一个新项目。然后,您可以编辑project.clj文件,使其看起来像这样

(defproject math-thing "0.1.0-SNAPSHOT"
   :description "FIXME: write description"
   :dependencies [[org.clojure/clojure "1.6.0"]
                  [math.combinatorics  "x.x.x"]
                  [math.numeric-tower  "x.x.x"]])

然后在编辑你的clj文件时,LightTable使用你的project.clj文件来启动instrepl并解析任何所需的依赖项。

答案 1 :(得分:0)

使用leiningen配置文件,例如~/.lein/profiles.clj并定义:injections [ ... ]节点,该节点执行(require '[ ])并导入,引用clojure和其他项目。我通常更喜欢在我的开发配置文件中至少存在Alembic(包装Maven / Sonatype),这样我就可以下载,安装maven然后使用一个宏的/函数包装器{class 1}一次性重新加载项目路径和项目重新加载由于用户空间中包含太多库,因此可以防止长时间加载。这是我通常想要在任何REPL或LT InstaRepl中出现的唯一函数,我将开发和调试片段放在项目distill*中,以保持大部分杂乱的项目特定。