blog.bouzuya.net

2018-05-21 bouzuya/purescript-bouzuya-http-method & http-status-code をつくった

PureScript のパッケージを 2 つほど公開した。その bouzuya/purescript-bouzuya-http-methodbouzuya/purescript-bouzuya-http-status-code のことを書く。

書くのを忘れていた。 2018-05-12 に http-method の v0.2.1 を公開し、 http-status-code も 2018-05-13 に v0.1.0 を公開したので、どちらも一週間以上が経っている。 http-method と http-status-code はそれぞれ名前の通り HTTP メソッドと HTTP ステータスコードを列挙するだけのパッケージだ。どちらもなんてことはないものだ。

これらの目的としては PureScript におけるパッケージ公開の流れを確認したかった。

PureScript のパッケージの多くは GitHub から Bower 経由で配布される。そのドキュメントは Pursuit で公開される。 ものによっては npm から配布されているパッケージ (JavaScript) を別途インストールする必要がある。

  • GitHub (Bower) …… PureScript パッケージ
  • npm …… JavaScript パッケージ
  • Pursuit …… PureScript ドキュメント

この時点でいろいろとややこしそうなんだけど、難しくはない。もうすこし書く。

PureScript のコンパイラは *.purs (PureScript のソースコード) を食わせれば、その取得方法は何でも良い。だから Bower でも git clone だろうと構わない。だいたいのプロジェクトは現状 Bower が使われている。今後は psc-package にすこしずつ変化していくかも。これについては近いうちに書く。

PureScript は外部の JavaScript を使える。そこで Node.js なら require(...) とすれば npm パッケージを使える。 JavaScript で既に動くものがあるなら、それを wrap するだけで良い。なので npm が使われている。

Pursuit はドキュメントを登録する先。あまり賢くない気がするけど、検索もできる。うん。手元でも動かせる。

で、登録する流れの話。 npm は既にあるものを使うだけなので、無視する。

Bower への登録は Bower のサイトを見ても良い。bower login して (GitHub の認証) 、 bower register する。 pulp versiongit tag などで Git の tag を付けて GitHub に push 。終わり。別に バージョンアップのたびに呼び出す必要はなく、あとは勝手に tag で見つけてくれるっぽい。 Bower はいまでこそ「いまだに Bower 使ってんの?」とまで言われるけど、わりとスマートな感じがする。 GitHub にあるものを取ってきて、そこにある bower.json に従ってさらに取ってくる……ということを素朴にやりたいなら十分だ (バージョンまわりのあれこれはもちろんあるんだけど、それは近いうちに書く) 。

次に Pursuit 。pulp publish する。これは内部的には purs publish に適切な引数を渡してくれているだけ。 Git の tag の push (↑に書いたとおり Bower ならこれが npm publish に相当する) もしてくれるけど、邪魔なので --no-push している。 Pursuit の Help にこのへんのことが書いてある 。ああ、 Pursuit の認証も GitHub の認証。 Bower と同じなので、これも楽だ。

git push --tags したとき Travis CI から Pursuit にアップロードするよう設定した。

思ったよりずっと簡単だった。よく出来ている。

ちなみに、このパッケージに bouzuya という prefix をつけたのは scoped package のような仕組みがないから。「個人的に使うだけのものをそも公開するな」という話になりそうだけど。