Hackage
Hackage...Haskellのライブラリを集めたアーカイブ.
PerlでいうCPAN、RubyでいうRubygems、Nodeでいうnpm的なやつです.
作って公開するまでを紹介します.
今回はyour-project
という名前のライブラリを作る事とします.
今回使った例は
に置いておきました.
|-- src/ ...ソースファイル
| |-- YourProject.hs ...モジュール本体
|
|-- Setup.hs ...セットアップ
|-- YourProject.cabal .. ライブラリのメタ情報
Cabal
Cabal...Haskellのパッケージシステム.
cabal
コマンド(僕のはv1.20.0.3
でした)を前提に話します.
cabal
コマンドの入れ方はMac用ですが昔に記事を書いたのでこれを
【Mac OS X 10.10】Haskell + Yesod + Heroku で webアプリ 1/3
説明開始
手順1: プロジェクト作るのフォルダを作る
$ mkdir your-project
$ cd your-project
手順2: ソースコードを書く.
(cabal init
の前にソースコードを書いておくととcabalがconfigをこれに色々最適化してくれる)
$ mkdir src
$ touch src/YourProject.hs
(名称はハイフン(-) つなぎでファイル名はキャメルケースが慣習ぽい)
今回は例として関数を1つ定義してみましょう.
module YourProject where
yourFunc = "This is your function!" :: String
手順3: cabal init
コマンド
$ cabal init
対話形式で色々聞かれる. 結構頭が良くて色々推論してくれる.(パッケージ名とか)
途中でライブラリ(他のHaskellのコードにインポートして使うもの)なのか実行可能ファイル(コマンド)としてビルドするのか選ぶところがある、今回はライブラリを想定して話を進めるがconfigなどの設定が微妙に違うだけ.
手順4: your-project.cabal
を手直し
ここで自動生成されたyour-project.cabal
がライブラリのメタ情報となるので手動で確認してみる.
$ vim your-project.cabal
丁寧に説明が書いてあるのでそれに概ね従うと良いです.
他のライブラリを使う場合はbuild-depends
にカンマ区切りで書いていく
手順5: ビルドして試す
サンドボックス(依存解消のためのスコープを絞ってライブラリをインストールするcabalの機能)を作ってインストール
$ cabal sandbox init
$ cabal install --only-dependencies
$ cabal configure
$ cabal build
cabal repl
でテスト
$ cabal repl
手順6: Hackage
からアカウントを作ります.
プロジェクトのディレクトリで
$ cabal sdist --snapshot
をやるとdist/your-project-0.1.0.0.tar.gz
というのが出来るのでこいつを
からアップロード. username とpasswordを上記で作ったアカウントのやつ.
手順7: 完成!
他にも色々なメタ情報を付加出来るので試すと良いです.
おやすみなさい