Hakyllライブラリを使用してプロジェクトを作成しようとしています。システムの混乱を避けるために、Hakyll プロジェクトと同じフォルダーにある cabal サンドボックスにインストールします。
多かれ少なかれ初心者なので、私はまだ害虫の慣行を正しくするのに苦労しています. 簡単なアプローチは、単に行うことです
$ cabal sandbox init
$ cabal install hakyll
$ cabal exec ghc -- --make site.hs
最後の行では、サンドボックス内のライブラリを使用して Hakyll ジェネレーターをコンパイルしています。明らかな欠点は、これが再現できないことです。クリーンなチェックアウトから再度実行しようとすると、Hakyll のメイン バージョンが変更される可能性があります。
別のアプローチは、適切なproject.cabal
ファイル (たとえば、このように: chromaleaves.cabal ) を作成してから、 cabal install
orを実行することcabal run
です。
ただ、これはちょっと情報量が多すぎる気がします。このプロジェクトを必要以上に公開するつもりはないので、そこにプロジェクト名とバージョン番号を入れる必要があるとは確信していません。(たとえば、 RubyGemfile
では、gem を自分で公開する場合を除き、ライブラリのみを指定し、他には何も指定しません。)
だから、最終的に私は次のようなファイルでそれを考え出した
$ cat project.cabal
cabal-version: >= 1.2
library
build-depends: base >=4.6
, containers
, process
, hakyll >=4.5
, pandoc
, pandoc-types
私は文字が打てます
$ cabal sandbox init
$ cabal install --only-dependencies
$ cabal exec ghc -- --make site.hs
すべての依存関係をダウンロードしているようで、ファイルをコンパイルできます。
これは合理的なアプローチですか、それとも cabal ファイルの名前、バージョン、および実行可能セクションで完全な仕様を提供するのが本当にベスト プラクティスですか?
編集:どうやら、私のアプローチではできませんcabal repl
。したがって、完全に異なる方法が存在するか、より完全な仕様を使用する必要があるようです。