Skip to content

The stack upload command

stack upload [DIR] [--pvp-bounds PVP-BOUNDS] [--ignore-check]
             [--[no-]test-tarball] [--tar-dir ARG] [--candidate]

Hackage accepts packages for uploading in a standard form, a compressed archive ('tarball') in the format produced by Cabal's sdist action.

stack upload generates a file for your package, in the format accepted by Hackage for uploads, and uploads the package to Hackage. For example, if the current working directory is the root directory of your project:

stack upload .

The HACKAGE_USERNAME and HACKAGE_PASSWORD environment variables


stack upload will request a Hackage username and password to authenticate. This can be avoided by setting the HACKAGE_USERNAME and HACKAGE_PASSWORD environment variables. For example:

export $HACKAGE_USERNAME="<username>"
export $HACKAGE_PASSWORD="<password>"
stack upload .
stack upload .

The HACKAGE_KEY environment variable


Hackage allows its members to register an API authentification token and to authenticate using the token.

A Hackage API authentification token can be used with stack upload instead of username and password, by setting the HACKAGE_KEY environment variable. For example:

stack upload .
stack upload .

--candidate flag

Pass the flag to upload a package candidate.

--ignore-check flag

Pass the flag to disable checks of the package for common mistakes. By default, the command will check the package for common mistakes.

--pvp-bounds option

The --pvp-bounds <pvp_bounds_mode> option determines whether and, if so, how PVP version bounds should be added to the Cabal file of the package. The available modes for basic use are: none, lower, upper, and both. The available modes for use with Cabal file revisions are lower-revision, upper-revision and both-revision.

For futher information, see the YAML configuration documentation.

--tar-dir option

The --tar-dir <path_to_directory> option determines whether the package archive should be copied to the specified directory.

--[no-]test-tarball flag

Default: Disabled

Set the flag to cause Stack to test the resulting package archive, by attempting to build it.