Во-первых, это не то, что делает spago install
. Вместо «добавления пакета к вашему проекту» spago install
загружает все пакеты, которые в настоящее время упоминаются в вашем spago.dhall
файле.
Во-вторых, идея Spa go состоит в том, что вы не выбираете конкретная версия пакета c. Вместо этого вы выбираете «моментальный снимок», который представляет собой набор определенных версий всех доступных пакетов, которые гарантированно скомпилируются и будут работать вместе. Это мера, предназначенная для предотвращения конфликтов версий и ада управления версиями (и это похоже на то, как работает Haskell stack
)
Снимок определяется в вашем файле packages.dhall
, а затем вы указываете определенные c пакеты, которые хотите использовать в spago.dhall
. Версия для каждого пакета взята из снимка.
Но если вам действительно нужно установить очень специфичную c версию пакета, и вы действительно знаете что вы делаете, тогда вы можете изменить сам снимок, который описан в packages.dhall
.
По умолчанию ваш packages.dhall
файл может выглядеть примерно так:
let upstream =
https://raw.githubusercontent.com/purescript/package-sets/psc-0.13.5-20200103/src/packages.dhall sha256:0a6051982fb4eedb72fbe5ca4282259719b7b9b525a4dda60367f98079132f30
let additions = {=}
let overrides = {=}
in upstream // additions // overrides
Это шаблон по умолчанию, который вы получаете после запуска spago new
.
Чтобы переопределить версию для определенного пакета c, добавьте его на карту overrides
следующим образом:
let overrides =
{ foo =
upstream.foo // { version = "v1.2.0" }
}
А потом запустите spago install
. Spa go должен вытащить версию 1.2.0
пакета foo
для вас.