2016-02-26 59 views
4

我有一個我用Stack創建的舊項目。我想將我的項目移動到Stackage提供的最新LTS。如何使用Stack更新.cabal文件?

當我更改stack.yaml文件中的解析器時,問題在於.cabal文件中extra-deps中的版本仍舊用於舊LTS集。有沒有辦法使用Stack自動更新.cabal文件中的版本號?

+0

如果你使用Stack,你爲什麼在cabal文件中有版本號? (我自己是一個haskell newb,所以這是一個真正的問題,而不是批評) –

+1

@ChrisMartin如果你想把一個項目打包成一個庫,它需要在cabal文件中有適當的依賴範圍。 – sclv

+0

我認爲在.cabal文件中發佈一個帶有無限依賴的庫是很好的,只要你發佈了一個stack.yaml文件。如果你通過Stackage發佈你的包,構建服務器將繼續編譯你的項目並檢查錯誤。這很好。 (並不像你的依賴沒有自己的問題。) – hao

回答

0

您可以簡單地刪除cabal文件中build-depends的(上限)(的一部分)。

當涉及到分發你的軟件包時,如果你使用了--pvp-bounds標誌,堆棧可以自動添加依賴邊界。 stack sdist --pvp-bounds upper,stack upload --pvp-bounds both

有這個功能blog post by Michael Snoyman