LoginSignup
7
3

More than 5 years have passed since last update.

hpack と hspec に対応した stack templates

Last updated at Posted at 2017-09-23

私が作った stack template

今回の記事に関連して作成したテンプレートは gist に置いています。

hpackstack template も知ってるし使ってるという方は、記事を読まなくてもいいので上記のテンプレートを使ってみてください。
独自にカスタマイズしたい方もご自由にどうぞ。

hpack とは?

hpack は .cabal ファイルを package.yaml から生成する機能を提供します。
(hpack を使わずに) Haskell のプログラムを作成するには .cabal ファイルを書く必要があります。
.cabal の代わりに package.yaml を作成・編集することによって開発時の煩わしさを軽減できます。

hpack を使うメリットを知るには下記の記事が参考になります。
これからのHaskellプロジェクトではcabalではなくpackage.yaml(hpack)を使いましょう

stack template

stack template は Haskell (stack) のプロジェクトの雛形を作成するときに使います。
例えば simple-hpack template を使ってプロジェクト(YOUR_PROJECT)を作成するには、以下のコマンドを実行します。

stack new YOUR_PROJECT simple-hpack

template 一覧を表示する

テンプレートは上記以外にも複数あります。
以下のコマンドでテンプレート一覧を表示します。
stack templates

独自テンプレートを使う

筆者がよく使うのは hspec というテストフレームワークと servant というWebフレームワークです。
毎度、新しいアプリケーションを作る度に雛形を用意するのは大変なので、独自のテンプレートを用意しました。

以下のコマンドでテンプレートからプロジェクトを作成できます。

  • hspec + hpack
    stack new hspec-example https://gist.githubusercontent.com/algas/0ec303769e09a8c9188b83a3d7a8990c/raw/e88e90e8bcf319077a3f4391e13088e73901aed3/hspec-hpack.hsfiles
  • servant + hspec + hpack
    stack new servant-example https://gist.githubusercontent.com/algas/0ec303769e09a8c9188b83a3d7a8990c/raw/e88e90e8bcf319077a3f4391e13088e73901aed3/servant-hpack.hsfiles

プログラムの実行

  • ビルド
    stack build
  • テスト実行
    stack test
  • プログラム実行(前後の空白を除去する)
    1. stack build && stack exec hspec-example
    2. echo ' foo bar ' | stack exec hspec-example
  • プログラム実行(Webサーバ)
    1. stack build && stack exec servant-example
    2. curl http://localhost:8080/users

参考文献

https://github.com/sol/hpack
https://github.com/commercialhaskell/stack-templates
https://www.ncaq.net/2017/07/31/

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3