Giter VIP home page Giter VIP logo

package-sets's Introduction

Package Sets

Build Status

A curated list of PureScript packages for the spago and psc-package package managers.

What is a package set?

A package set is a collection of packages such that there is only one version for a given package in the set, and the entire set of packages successfully compiles together. This ensures that you can always install packages from the package set without introducing conflicts between modules in your dependencies.

If you use a package manager based on package sets, that means that to install a package:

  1. It must be in the package set
  2. Its dependencies and transitive dependencies must also be in the package set

Adding your package

This repository aims to be a good collection of packages you can depend on. In general we welcome all packages, provided that they follow some guidelines defined in the contributing guide. The linked document also contains instructions on how to add new packages to the set, and information on versioning and related policies.

How do I use package-sets with spago?

spago is a package manager and build tool for PureScript. It is very similar to psc-package, and the main differences are:

  • it uses Dhall for its configuration (instead of json as psc-package does)
  • it supports package overrides and additions directly in the project configuration
  • it supports local dependencies (think bower link)

With spago the package-set address is specified in the upstream variable of your local packages.dhall, which will usually import a remote packages.dhall, e.g. the one from this repo.

You can change the package-set version you are using by running spago upgrade-set, or if you want to point to a particular version, spago upgrade-set --tag <tag>.

How do I use package-sets with Psc Package?

psc-package is a package manager for PureScript that works essentially by running a bunch of git commands. Its distinguishing feature from most package managers is that it uses a package set.

psc-package will use as package-set the packages.json file in the root of any package-set repository, like in this case.

In order to use a package-set, the psc-package.json file in the root of your project, should look something like this:

{
  "name": "project-name",
  "set": "set-name",
  "source": "https://github.com/purescript/package-sets.git",
  "depends": [
    "aff",
    "console",
    "prelude"
  ]
}

The way this file works is that:

  • "set" matches the tag or branch of the git repository of the package set
  • "source" is the URL for the git repository of the package set
  • "depends" is an array of strings, where the strings are names of packages you depend on. Note: as said above, these dependencies should be contained in the package-set

When you run psc-package install, psc-package will perform the steps so that the following directory will have the package set cloned into it:

.psc-package/set-name/.set

And the package set will then be available in

.psc-package/set-name/.set/packages.json

When you install a package in your given package set, the package contents will be cloned in the following directory structure:

.psc-package/${set-name}/${package-name}/${tag}

E.g. in case of [email protected]:

.psc-package/set-name/aff/v5.0.0

package-sets's People

Contributors

andys8 avatar anttih avatar artemissystem avatar athanclark avatar chexxor avatar danieljharvey avatar drewolson avatar ebmtranceboy avatar f-f avatar garyb avatar i-am-the-slime avatar jamesdbrock avatar joneshf avatar jordanmartinez avatar justinwoo avatar markfarrell avatar maxdeviant avatar michaelxavier avatar mschristiansen avatar newlandsvalley avatar nsaunders avatar oreshinya avatar pacchettibotti avatar paf31 avatar paluh avatar purefunctor avatar sigma-andex avatar th-awake avatar thomashoneyman avatar ursi avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.