@@ -2,31 +2,36 @@
22
33[](https://github.com/purescript/package-sets/actions)
44
5−A curated list of PureScript packages for Psc-Package and Spago
6−
7−
8−
5+A curated list of PureScript packages for the `spago` and `psc-package` package managers.
96
107- [What is a package-set?](#what-is-a-package-set)
118- [Add your package](#add-your-package)
12−- [How do I use package-sets with `psc-package`?](#how-do-i-use-package-sets-with-psc-package)
139- [How do I use package-sets with `spago`?](#how-do-i-use-package-sets-with-spago)
14−
10+- [How do I use package-sets with `psc-package`?](#how-do-i-use-package-sets-with-psc-package)
1511
1612## What is a package set?
1713
18−A package set is a **collection** of packages, such that there is only **one** entry (i.e. version) for a given package in the set.
14+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.
15+
16+If you use a package manager based on package sets, that means that to install a package:
17+
18+1. It must be in the package set
19+2. Its dependencies and transitive dependencies must also be in the package set
1920
20−If you use a package manager based on package-sets, this means that when you want to install a package:
21−- it must be in the package set
22−- its dependencies and all the transitive dependencies must be in the package set
21+## Adding your package
2322
24−## Add your package
23+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](CONTRIBUTING.md). The linked document also contains instructions on how to add new packages to the set, and information on versioning and related policies.
24+
25+## How do I use `package-sets` with `spago`?
26+
27+[`spago`][spago] is a package manager and build tool for PureScript. It is very similar to `psc-package`, and the main differences are:
28+- it uses Dhall for its configuration (instead of `json` as `psc-package` does)
29+- it supports package overrides and additions directly in the project configuration
30+- it supports local dependencies (think `bower link`)
2531
26−This repository aims to be a good collection of packages you can depend on.
27−In general we welcome all packages, provided that they follow some guidelines defined in the [contributing guide](CONTRIBUTING.md).
32+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.
2833
29−The linked document also contains instructions on how to add new packages to the set, and information on versioning and related policies.
34+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>`.
3035
3136## How do I use `package-sets` with Psc Package?
3237
@@ -79,18 +84,6 @@ E.g. in case of `aff@v5.0.0`:
7984.psc-package/set-name/aff/v5.0.0
8085```
8186
82−## How do I use `package-sets` with `spago`?
83−
84−[`spago`][spago] is a package manager and build tool for PureScript. It is very similar to `psc-package`, and the main differences are:
85−- it uses Dhall for its configuration (instead of `json` as `psc-package` does)
86−- it supports package overrides and additions directly in the project configuration
87−- it supports local dependencies (think `bower link`)
88−
89−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.
90−
91−You can change the package-set version you are using by just pointing the `upstream` to a different location, and running `spago freeze` afterwards (see [its readme][spago] for more info about this)
92−
93−
9487[spago]: https://github.com/spacchetti/spago
9588[psc-package]: https://github.com/purescript/psc-package
9689[issues]: https://github.com/purescript/package-sets/issues