Clojure の project.clj と deps.edn を理解する
Clojureのプロジェクト構成管理周りのしくみの理解があいまいだったので、調べてまとめた。
cryogen
とかshadow cljs
とかのプロジェクト生成のときは、README.mdの通りにコマンド打っただけで、project.clj
とかdeps.edn
のことがわかってなかった。
依存関係を追加するときに迷ったので、整理する・
あと、lein **
も忘れるので整理する。
node.js
のnpm
、ruby
のgem
、python
のpip
、perl
のcpan
に相当するもの。Leiningen
の方が古くからあり、Leiningen
の動き自体を拡張する仕組みもあるので、いろんな機能を持つ。
対してClojure-CLI
はシンプルな単機能を持つ複数のCLIツールで目的を達成しようとする。
ツール | 設定ファイル | 備考 |
---|---|---|
Leiningen | project.clj | JVMの設定とか、scriptingとかいろんな情報が入っている |
Clojure-CLI | deps.edn | 本当に依存関係だけの情報 |
ちなみに.edn
はclojure用の.json
みたいなもんらしい。
設定ファイルに使われるのも納得。
npm
との対比で憶えるのが自分にはしっくりくる。
$ lein new <template-name> <project-name>
create-xx-app
のほうが近いか。
ネットからテンプレート探してきてそれに基づいて、ディレクトリ構成とか依存関係の情報を生成してくれる。
以下はオフラインでも利用可能。
lein new
用のメタテンプレート$ lein search
で検索して、project.clj
の:dependencies
に手で追加。$ lein deps
でインストール。
コマンド1発でできる手段はない。
$ lein deps
対応するものはない。project.clj
の:dependencies
から削除すればよい。
パッケージはどこにあるかというと、~/.m2
にある。
容量気になるなら削除すればよい。
$ lein run
エントリポイントは、project.clj
の:main
に書かれている。
直接対応するものはない。
$ lein <aliase-name>
でproject.clj
の:aliases
を起動できるがシェルスクリプトではない。
プラグインを入れるとかで対応はできると思われる。
$ lein publish
でClojars
リポジトリに登録できる。
怖い。
cljdocすごい。
Gitリポジトリソースあればドキュメントが生成できる。
他の言語ではこういうの見たことない。
と思って調べたらcpan
でもドキュメントホスティングしてる。
javadoc
とかrdoc
とかは組込みで、dir
とdoc
があるから十分。
(require 'clojure.repl)
(dir sample.core)
(doc sample.core/main)