A key data type to identify a compiled Item in the Store.
Conceptually, it's a combination of a file path and a version name.
The version is used only when a file is
compiled within a rule using the version wrapper function
(the same source file
can be compiled into several items in the store, so the version exists to distinguish
them).
Use functions like fromFilePath, setVersion, getMatches to build an Identifier.
Usage Examples
Normally, compiled items are saved to the store by Hakyll.Core.Rules.Rules with an automatic, implicit identifier
and loaded from the store by the user in another rule with a manual, explicit identifier.
Identifiers when using match. Using match builds an implicit identifier that corresponds to the expanded, relative path of the source file on disk (relative to the project directory configured with providerDirectory):
-- e.g. file on disk: 'posts/hakyll.md'
match "posts/*" $ do -- saved with implicit identifier 'posts/hakyll.md'
compile pandocCompiler
match "about/*" $ do
compile $ do
compiledPost <- load (fromFilePath "posts/hakyll.md") -- load with explicit identifier
...
Normally, the identifier is only explicitly created to pass to one of the load functions.
Identifiers when using create. Using create (thereby inventing a file path with no underlying file on disk) builds an implicit identifier that corresponds to the invented file path:
create ["index.html"] $ do -- saved with implicit identifier index.html
compile $ makeItem ("Hello world" :: String)
match "about/*" $ do
compile $ do
compiledIndex <- load (fromFilePath "index.html") -- load with an explicit identifier
...
Identifiers when using versions. With version the same file can be compiled into several items in the store. A version name is needed to distinguish them:
-- e.g. file on disk: 'posts/hakyll.md'
match "posts/*" $ do -- saved with implicit identifier ('posts/hakyll.md', no-version)
compile pandocCompiler
match "posts/*" $ version "raw" $ do -- saved with implicit identifier ('posts/hakyll.md', version raw)
compile getResourceBody
match "about/*" $ do
compile $ do
compiledPost <- load (fromFilePath "posts/hakyll.md") -- load no-version version
rawPost <- load . setVersion (Just "raw") $ fromFilePath "posts/hakyll.md" -- load version raw
...
Use setVersion to set (or replace) the version of an identifier like fromFilePath "posts/hakyll.md".
Instances6Eq, Ord, Show, IsString, NFData, Binary
Eq IdentifierDefined in hakyll-4.17.0.0 · Hakyll.Core.IdentifierOrd IdentifierDefined in hakyll-4.17.0.0 · Hakyll.Core.IdentifierShow IdentifierDefined in hakyll-4.17.0.0 · Hakyll.Core.IdentifierIsString IdentifierDefined in hakyll-4.17.0.0 · Hakyll.Core.IdentifierNFData IdentifierDefined in hakyll-4.17.0.0 · Hakyll.Core.IdentifierBinary IdentifierDefined in hakyll-4.17.0.0 · Hakyll.Core.Identifier