Как установить конкретную версию пакета c с Spa go? - PullRequest
0 голосов
/ 25 мая 2020

С такими инструментами, как npm, мы можем установить c версию

npm install foo@1.2.0 

Как установить c версию с помощью spago install?

1 Ответ

3 голосов
/ 26 мая 2020

Во-первых, это не то, что делает 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 для вас.

...