Embed arbitrary files like JSON or plain text into your Haskell code as if they were written inside Haskell.
Note: This library uses Template Haskell for the embedding.
Add the latest version of file-embed
to your
package description <package>.cabal
or Stack package.yaml
file.
Given the folder structure
$ tree
.
└── myapp
│ ├── app
│ │ └── Main.hs
│ ├── embedded.json
│ └── myapp.cabal
└── cabal.project
you can embed a file as follows:
-- file: Main.hs
{-# LANGUAGE TemplateHaskell #-}
import qualified Data.ByteString as BS
import Data.FileEmbed (embedFileRelative)
myFile :: BS.ByteString
myFile = $(embedFileRelative "embedded.json")
The path to embedFileRelative
is relative to the package root; the folder where the <package>.cabal
file is.
Take a look at the Hackage documentation
for more examples and variations.