1

完成了第一遍 Hackage 的上传, 记录一下中间一些用到的东西

这篇笔记不是完整的内容, 只是上传一个模块需要的基本操作
我没有细看添加文档跟测试的内容, 以及其他高级内容
这篇笔记有其他问题请评论指出

到 Hackage 注册

https://hackage.haskell.org/accounts

注册好以后, 用户名密码会在命令行当中用到.

编写代码

代码放在 src/ 目录下边

配置文件

项目跟根路径的 <pkg-name>.cabal Setup.hs

Setup.hs 好像也可以是 Setup.lhs.

.cabal 文件的 name 跟文件名需要是一致的
具体的配置我也说不清楚了, 看教程上的说明, 其实很复杂
https://howistart.org/posts/haskell/1
https://downloads.haskell.org/~ghc/7.0.4/docs/html/Cabal/authors.html
https://www.haskell.org/cabal/users-guide/developing-packages.html
http://begriffs.com/posts/2014-10-25-creating-package-hackage.html

另个的好办法当然是去别的项目里抄了, 对于新手来说...
https://github.com/pubnub/haskell/blob/master/pubnub.cabal
https://github.com/chrisdone/hell/blob/master/hell.cabal
https://github.com/switchface/helm/blob/master/helm.cabal

命令行

命令行都是在项目的根路径运行的:

cabal check

检查配置文件是否正确, 会给出一些提示
除了文档上写的, 到 GitHub 上看看别人的 .cabal 文件怎么写很用有:
https://github.com/stars?language=haskell
具体的小问题用 Google 找一下应该是有的

cabal configure
cabal build
cabal install

在本地编译模块, 然后还有安装. 编译的文件会在 dist/ 目录当中

cabal sdist
cabal upload dist/<pgk-and-version-extname>

打包上传到 Hackage 服务器

cabal update

更新本地模块的列表

ghc-pkg unregister --force <pkg-version>

强制删除某个模块
http://stackoverflow.com/a/10587933/883571

Deprecate 模块

已经 deprecated 的模块会显示在这里
https://hackage.haskell.org/packages/deprecated

已经发布的模块是没法删除的,
https://github.com/haskell/hackage-server/issues/112

可以进入这样一个网址去编译模块已经被弃用:

http://hackage.haskell.org/package/<you-pkg-name>/deprecated/edit

注意填写作为替代的模块的名称, 然后还有要输入密码


题叶
17.3k 声望2.6k 粉丝

Calcit 语言作者


引用和评论

0 条评论