Edited at

stack new した時に出てくるファイルのテンプレートの設定

More than 3 years have passed since last update.

前回の記事では、

stack newしてとりあえず簡単なHaskell製のプログラムを書き始める方法をお伝えしました。

今回は、前回の記事でTODOになっていた、stack newして作られるファイルのテンプレートの設定を変えて、もうちょっと始めやすくしたいと思います。

ちょうど僕が新しいプロジェクトを作りたくなったので、その作業記録です。


ハマりどころ: stackのバージョンが古かったorz

いきなりですがハマりました... :sweat_smile:

下記の通りに動かすには、stackを0.1.4.0以降に上げる必要があります。

更新する場合は、やはりOSによって方法が異なってしまいますが、

stack upgradeと実行すると、よしなにやってくれるかもしれません。

(EXPERIMENTALな機能だそうなのでご利用は計画的に。)

私の場合は、Arch Linuxなので普通にyaourt -S haskell-stackしました :innocent:


テンプレートの正体を追え!

:relieved: それでは気を取り直して。

そもそも、前回stack newしてできたテンプレートの内容はどこから来ているのでしょう?

ググったらすぐ見つかりました。commercialhaskell/stack-templatesです。

で、こちらのREADME曰く、~/.stack/stack.yaml:warning: 重要な変更あり1)をいじれ、とのこと。

私の場合は以下の通り。


~/.stack/stack.yaml(v0.1.6.0以降は~/.stack/config.yaml)

templates:

params:
author-name: Yuji Yamamoto
author-email: whosekiteneverfly@gmail.com
copyright: 2015 Yuji Yamamoto
github-username: igrep
category: Development

で、保存したら後はこの間と同様、

$ stack new foobar

するだけです。

LICENSEファイルなどを確認してみましょう。


もっと違うテンプレートも使いたい!

私が調べた限り、今のところcommercialhaskell/stack-templatesにあるテンプレートのみが使えるみたいです。

*.hsfilesとなっているファイルがそれです。デフォルトではsimple.hsfilesというのが使われます。

他のテンプレートを使いたいときは、

$ stack new foobar hakyll-template

などと実行しましょう。これですぐに新しいブログを始められますね!


git initも自動化したい!!!!!!!1

ちなみに、上述ハマった件でstackのソースを調べていたところ、下記のようなオプションを見つけました。


~/.stack/stack.yaml(v0.1.6.0以降は~/.stack/config.yaml)

templates:

scm-init: git # <- コレ!
params:
...

文字通りです。

stack new foobarすれば、foobar/以下にテンプレートの内容だけでなく、.gitも作られます。

便利! :smile:





  1. stack v0.1.6.0以降、~/.stack/stack.yaml~/.stack/config.yamlとなったそうです。ご利用の方はご注意ください。