stack: The Haskell Tool Stack

[ bsd3, development, library, program ] [ Propose Tags ]

Please see the README.md for usage information, and the wiki on Github for more details. Also, note that the API for the library is not currently stable, and may change significantly, even between minor releases. It is currently only intended for use by the executable.


[Skip to Readme]

Flags

Manual Flags

NameDescriptionDefault
integration-tests

Run the integration test suite

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.0.0, 0.0.1, 0.0.2, 0.0.2.1, 0.0.3, 0.1.0.0, 0.1.1.0, 0.1.2.0, 0.1.3.0, 0.1.3.1, 0.1.4.0, 0.1.4.1, 0.1.5.0, 0.1.6.0, 0.1.8.0, 0.1.10.0, 0.1.10.1, 1.0.0, 1.0.2, 1.0.4, 1.0.4.1, 1.0.4.2, 1.0.4.3, 1.1.0, 1.1.2, 1.2.0, 1.3.0, 1.3.2, 1.4.0, 1.5.0, 1.5.1, 1.6.1, 1.6.1.1, 1.6.3, 1.6.3.1, 1.6.5, 1.7.1, 1.9.1, 1.9.1.1, 1.9.3, 1.9.3.1, 2.1.1, 2.1.1.1, 2.1.3, 2.1.3.1, 2.3.1, 2.3.3, 2.5.1, 2.5.1.1, 2.7.1, 2.7.3, 2.7.5, 2.9.1, 2.9.3, 2.9.3.1, 2.11.1, 2.13.1, 2.15.1, 2.15.3, 2.15.5, 9.9.9 (info)
Change log ChangeLog.md
Dependencies aeson (>=0.8.0.2 && <0.10), ansi-terminal (>=0.6.2.3 && <0.7), async (>=2.0.2 && <2.1), attoparsec (>=0.12.1.5 && <0.14), base (>=4.7 && <5), base16-bytestring (>=0.1.1.6 && <0.2), base64-bytestring (>=1.0.0.1 && <1.1), bifunctors (>=4.2.1 && <5.1), binary (>=0.7 && <0.8), binary-tagged (>=0.1.1 && <0.2), blaze-builder (>=0.4.0.1 && <0.5), byteable (>=0.1.1 && <0.2), bytestring (>=0.10.6.0 && <0.11), Cabal (>=1.22.4.0 && <1.23), conduit (>=1.2.5 && <1.3), conduit-combinators (>=0.3.1 && <1.1), conduit-extra (>=1.1.7.1 && <1.2), containers (>=0.5.5.1 && <0.6), cryptohash (>=0.11.6 && <0.12), cryptohash-conduit (>=0.1.1 && <0.2), deepseq (>=1.4 && <1.5), directory (>=1.2.2.0 && <1.3), edit-distance (>=0.2 && <0.3), either (>=4.4.1 && <4.5), enclosed-exceptions (>=1.0.1.1 && <1.1), exceptions (>=0.8.0.2 && <0.9), extra (>=1.4.2 && <1.5), fast-logger (>=2.3.1 && <2.5), file-embed (>=0.0.9 && <0.1), filelock (>=0.1.0.1 && <0.2), filepath (>=1.4.0.0 && <1.5), fsnotify (>=0.2.1 && <0.3), gitrev (>=1.1 && <1.2), hashable (>=1.2.3.3 && <1.3), hastache (>=0.6.1 && <0.7), hpc (>=0.6.0.2 && <0.7), http-client (>=0.4.24 && <0.5), http-client-tls (>=0.2.2 && <0.3), http-conduit (>=2.1.7 && <2.2), http-types (>=0.8.6 && <0.9), lifted-base (>=0.2.3.6 && <0.3), monad-control (>=1.0.0.4 && <1.1), monad-logger (>=0.3.13.1 && <0.4), monad-loops (>=0.4.2.1 && <0.5), mtl (>=2.1.3.1 && <2.3), old-locale (>=1.0.0.6 && <1.1), optparse-applicative (>=0.11.0.2 && <0.12), optparse-simple (>=0.0.3 && <0.1), path (>=0.5.2 && <0.6), persistent (>=2.1.2 && <2.3), persistent-sqlite (>=2.1.4 && <2.3), persistent-template (>=2.1.1 && <2.2), pretty (>=1.1.1.1 && <1.2), process (>=1.2.3.0 && <1.3), project-template (>=0.2 && <0.3), resourcet (>=1.1.4.1 && <1.2), retry (>=0.6 && <0.8), safe (>=0.3 && <0.4), semigroups (>=0.5 && <0.18), split (>=0.2.2 && <0.3), stack (>=0.1.8.0 && <0.2), stm (>=2.4.4 && <2.5), streaming-commons (>=0.1.10.0 && <0.2), tar (>=0.4.1.0 && <0.5), template-haskell (>=2.9.0.0 && <2.11), temporary (>=1.2.0.3 && <1.3), text (>=1.2.0.4 && <1.3), time (>=1.4.2 && <1.6), transformers (>=0.4.2.0 && <0.5), transformers-base (>=0.4.4 && <0.5), unix (>=2.7.0.1 && <2.8), unix-compat (>=0.4.1.4 && <0.5), unordered-containers (>=0.2.5.1 && <0.3), vector (>=0.10.12.3 && <0.12), vector-binary-instances (>=0.2.1.0 && <0.3), void (>=0.7 && <0.8), Win32 (>=2.3.1.0 && <2.4), word8 (>=0.1.2 && <0.2), yaml (>=0.8.10.1 && <0.9), zlib (>=0.5.4.2 && <0.6) [details]
License BSD-3-Clause
Author Commercial Haskell SIG
Maintainer manny@fpcomplete.com
Revised Revision 4 made by borsboom at 2015-12-05T13:47:24Z
Category Development
Home page https://github.com/commercialhaskell/stack
Source repo head: git clone https://github.com/commercialhaskell/stack
Uploaded by borsboom at 2015-11-20T17:43:10Z
Distributions Arch:2.9.1, Debian:2.3.3, Fedora:2.9.3.1, LTSHaskell:2.13.1, NixOS:2.15.5
Reverse Dependencies 3 direct, 1 indirect [details]
Executables stack
Downloads 57938 total (346 in the last 30 days)
Rating 2.25 (votes: 7) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for stack-0.1.8.0

[back to package description]

The Haskell Tool Stack

Build Status Windows build status Release

stack is a cross-platform program for developing Haskell projects. It is aimed at Haskellers both new and experienced.

It features:

  • Installing GHC automatically, in an isolated location.
  • Installing packages needed for your project.
  • Building your project.
  • Testing your project.
  • Benchmarking your project.

How to install

Downloads are available by operating system:

Upgrade instructions

Note: if you are using cabal-install to install stack, you may need to pass a constraint to work around a Cabal issue: cabal install --constraint 'mono-traversable >= 0.9' stack.

Quick Start Guide

First you need to install it (see previous section).

Start your new project:
stack new my-project
cd my-project
stack setup
stack build
stack exec my-project-exe
  • The stack new command will create a new directory containing all the needed files to start a project correctly.
  • The stack setup will download the compiler if necessary in an isolated location (default ~/.stack) that won't interfere with any system-level installations. (For information on installation paths, please use the stack path command.).
  • The stack build command will build the minimal project.
  • stack exec my-project-exe will execute the command.
  • If you just want to install an executable using stack, then all you have to do isstack install <package-name>.

If you want to launch a REPL:

stack ghci

Run stack for a complete list of commands.

Workflow

The stack new command should have created the following files:

.
├── LICENSE
├── Setup.hs
├── app
│   └── Main.hs
├── my-project.cabal
├── src
│   └── Lib.hs
├── stack.yaml
└── test
    └── Spec.hs

    3 directories, 7 files

So to manage your library:

  1. Edit files in the src/ directory.

The app directory should preferably contains only files related to executables.

  1. If you need to include another library (for example the package text:

    • Add the package text to the file my-project.cabal in the section build-depends: ....
    • run stack build another time
  2. If you get an error that tells you your package isn't in the LTS. Just try to add a new version in the stack.yaml file in the extra-deps section.

It was a really fast introduction on how to start to code in Haskell using stack. If you want to go further, we highly recommend you to read the stack guide.

How to contribute

This assumes that you have already installed a version of stack, and have git installed.

  1. Clone stack from git with git clone https://github.com/commercialhaskell/stack.git.
  2. Enter into the stack folder with cd stack.
  3. Build stack using a pre-existing stack install with stack setup && stack build.
  4. Once stack finishes building, check the stack version with stack --version. Make sure the version is the latest.
  5. Look for issues tagged with newcomer and awaiting-pr labels

Build from source as a one-liner:

git clone https://github.com/commercialhaskell/stack.git && \
cd stack && \
stack setup && \
stack build

Complete guide to stack

This repository also contains a complete user guide to using stack , covering all of the most common use cases.

Questions, Feedback, Discussion

Why stack?

stack is a project of the Commercial Haskell group, spearheaded by FP Complete. It is designed to answer the needs of commercial Haskell users, hobbyist Haskellers, and individuals and companies thinking about starting to use Haskell. It is intended to be easy to use for newcomers, while providing the customizability and power experienced developers need.

While stack itself has been around since June of 2015, it is based on codebases used by FP Complete for its corporate customers and internally for years prior. stack is a refresh of that codebase combined with other open source efforts like stackage-cli to meet the needs of users everywhere.

A large impetus for the work on stack was a large survey of people interested in Haskell, which rated build issues as a major concern. The stack team hopes that stack can address these concerns.


Documentation Table Of Contents