# 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`). ## 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.