Skip to content

The stack run command

stack run [-- ARGUMENT(S) (e.g. stack run -- file.txt)]
          [--[no-]ghc-package-path] [--[no-]stack-exe]
          [--package PACKAGE] [--rts-options RTSFLAG] [--cwd DIR]

stack run builds a project executable and runs it. If the command has a first argument and it is recognised as the name of an executable component of a project package then that is built. Otherwise, the project's first executable is built. If the project has no executables Stack reports no executables found as an error.

Note

To identify a project's first executable, and search for the name of an executable component, Stack lists the executable components, in order, for each package, listed in order. For example:

packageA:a-exe < packageA:b-exe < packageB:a-exe < packageB:b-exe

Everything after -- on the command line is interpreted as a command line argument to be passed to what is run, other than a first argument recognised as the name of an executable component of a project package.

By default:

  • the GHC_PACKAGE_PATH environment variable is set for the subprocess. Pass the --no-ghc-package-path flag to not set the variable; and

  • the STACK_EXE environment variable is set with the path to Stack. Pass the --no-stack-exe flag to not set the variable.

The --cwd option can be used to set the working directory before the executable is run.

The --package option (which can be specified multiple times) can be used to add a package name to build targets.

The --rts-options option (which can be specified multiple times) can be used to pass a list of GHC's runtime system (RTS) options to the executable when it is run. (The +RTS and -RTS must not be included.)