blog.bouzuya.net

2018-06-04 bouzuya/bs 0.1.0 をつくった

昨日 (2018-06-03) に bouzuya/bs の 0.1.0 をつくった。

bs は blog.bouzuya.net (bbn) の 5.x に関連したメモ取りツールだ。……と言ってもこのリポジトリはずっと空で、実体としては bouzuya/bs-code にある Visual Studio Code 拡張だった。さらにそちらもほとんど放置しているのだけど……。

ここまでの流れは 2018-06-012018-06-02 にすこしだけある。 bs-code の動作の遅さを直すついでに bs へ処理を移動し、そのついでに PureScript で npm パッケージをつくってみることにした。

bs の中身は大したことのない (やや汚い) ひとつの関数だ。少なくとも現状は。

bs は PureScript で書いている。 PureScript は JavaScript に変換されるし、周辺パッケージは Node.js に依存するものが多い。しかし PureScript で書かれている npm パッケージを、ぼくは知らない (知らないだけであると思うんだけど) 。

今回は PureScript 0.11.7 を使用した。もう 0.12 が出ているのだけど、まだ周辺のパッケージが整備されていないし、公式サイトのドキュメントもきちんと更新されていないような状況なので見送った。

また今回は psc-package を使用した。つまり bower の使用を避けた。この理由は↑と同じで 0.11 から 0.12 への過渡期なので、下手に 0.12 対応のパッケージをインストールするとハマると踏んだ。

困ったポイントは PureScript から生成されたファイルに module.exports = ...; を書く方法がないことだ。

output/ に出力するファイルは require('./output/Main').main() のように使える。ただ output/ には開発やテストの依存関係も含まれている。不必要なファイルを含んでしまう。

pulp build で出力されるファイルはひとつのファイルにまとめられているし、 --optimise をつければ未使用の関数は削られる。しかし、 module.exports されない。 var PS = {}; されたオブジェクトに突っ込まれるだけ。困る。

良い方法を思いつかないので npm script の preparemodule.exports = PS['Lib']; を生成済みファイルに書き込んだ。

とりあえず動くようになったので、ここで区切り。