A PureScript package manager and build tool focused on reproducible builds and great developer experience.
Spago is the official package manager and build tool for the PureScript functional programming language. It manages dependencies, compiles code, runs tests, and bundles projects, providing an integrated workflow similar to Rust's Cargo or Haskell's Stack. It solves the problem of managing PureScript packages and ensuring reproducible builds across different environments.
PureScript developers and teams building applications or libraries who need a reliable tool for dependency management, compilation, and project orchestration.
Developers choose Spago for its curated package sets that guarantee build reproducibility, its support for monorepos and polyrepos, and its seamless integration with the PureScript compiler and ecosystem tools like esbuild for bundling.
🍝 PureScript package manager and build tool
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses curated package sets to guarantee dependency compatibility and consistent builds across environments, eliminating version conflicts as described in the design goals.
Manages multiple PureScript packages in a single workspace with shared dependencies, simplifying complex project structures and reducing configuration overhead.
Combines dependency management, compilation, testing, and bundling into one tool, providing a streamlined experience from init to publish without needing separate scripts.
Only requires git and the PureScript compiler to be installed, keeping the tool lightweight and reducing setup friction, as emphasized in the philosophy.
The new PureScript rewrite lacks built-in watch mode for automatic recompilation, a regression from the legacy version that slows down iterative development.
Spago does not handle JavaScript or npm dependencies, requiring developers to use separate tools like npm or yarn, as acknowledged in the FAQ section.
Setting up custom package sets, alternate backends, or polyrepo structures involves detailed YAML configuration that can be error-prone and daunting for new users.