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.projectyou 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.