<Haskell> Stack の使い方メモ
Stack は,簡単に言うと Haskell のプロジェクト用ビルドツール.
Stack では,従来 Haskell での開発の際にあった(らしい)パッケージの依存関係がすぐぶっ壊れる問題を解決しているため,現在こいつをって開発を行うのが一般的.
Installing
Unix 系 OS であれば次のどちらかを打てばよい.
$ curl -sSL https://get.haskellstack.org/ | sh
$ wget -qO- https://get.haskellstack.org/ | sh
Windows の場合は インストーラー が用意されている.
よく使うコマンド
- プロジェクトの新規作成(雛形を使う)
$ stack new <PROJECT NAME>
この雛形には package.yaml
と stack.yaml
という設定ファイルが含まれている.package.yaml
には依存パッケージやプロジェクト全体の設定やバージョン等の情報,stack.yaml
には GHC のバージョン等を記述する(後述).
- プロジェクトの新規作成(雛形を使わない)
$ stack init <PROJECT NAME>
- プロジェクト指定のパッケージやコンパイラをインストール
$ stack setup
$ stack install <TOOL NAME>
インストールされたコンパイラやパッケージ等は,~/.stack
以下に格納される.いざとなればこれを丸ごとふっ飛ばせば,リセットできる.
- プロジェクトのビルド
$ stack build
- プロジェクトの実行
$ stack exec <EXECUTABLE>
- REPL の起動
$ stack ghci
- テストの実行
$ stack test
- Stack の更新
$ stack upgrade
- Haddock ドキュメント(Hackage 形式のドキュメント)の作成
$ stack haddock --haddock-arguments --odir=haddock
この上で,./haddock/index.html
を Web ブラウザ等で開くと閲覧できる.
設定ファイルの書き方とか
設定ファイルは(基本的には)
hoge.cabal
stack.yaml
から成る.
最近のバージョンではデフォルトで hpack に対応しているため, cabal ファイルを直接編集する必要はあまりない.
代わりに package.yaml
を編集する.
グローバルな設定
個々のプロジェクトではなく,どこからでも Stack 経由で GHC を使う感じのヤツ.
- グローバルな GHC バージョンの指定
~/.stack/global-project/stack.yaml
に記述.- 記述しないと,最新版が入る.
外部ライブラリを使うための記述
標準ライブラリ 以外のライブラリを使いたいときの設定の記述方法.
基本的に,次にあるライブラリを使うことができる.
-
package.yaml
のdependencies
に,
dependencies: - containers - text
などと書き加えていくだけでおk.
-
stack.yaml
のextra-deps
に,使いたいライブラリを書き加える.
extra-deps: - hoge-3.1.4
その上で,package.yaml
の dependencies
にも書き加える.
extra-deps: - github: user/repository commit: commitID
その上で,やはり package.yaml
の dependencies
にも書き加える.
実行・テストの記述
それぞれ package.yaml
の executables:
・test:
以下に記述する.
雛形をいい感じに変更すれば使えるので詳細は省く.