Skip to content

Non-standard project initialization

You may need to configure Stack to work with an existing project that has one or more Cabal files but no Stack project-level configuration file (stack.yaml, by default).

The stack init command

The stack init command:

  • finds all of the Cabal files in your current directory and subdirectories (unless you use --ignore-subdirs) and determines the packages and versions they require
  • Finds the best combination of snapshot and package flags that allows everything to compile with minimum external dependencies
  • Tries to look for the best matching snapshot from latest Haskell LTS, latest Stackage Nightly, and other Haskell LTS, in that order

If stack init finds a match, it will generate a stack.yaml file.

You can specify the directory, or directories to include in the search for Cabal files.

The stack init --force flag

Set the flag to force the over-writing of any existing stack.yaml file.

The stack init --ignore-subdirs flag

Set the flag to not search for Cabal files in subdirectories.

The stack init --omit-packages flag

Set the flag to exclude any conflicting or incompatible user packages.