Haxe書いてた際の成果物
haxelib newコマンドが追加されていた - Qiita
haxelib使うとグローバルが汚れて嫌な感じだったからbundlerみたいなやつないんか!!と思って半分作ったところで、HEADに`haxelib new`があることに気づいた俺たちは
— 深澄りぜ (@Misumi_Rize) 2015, 1月 17
おうこれでええやんけ
— 深澄りぜ (@Misumi_Rize) 2015, 1月 17
いろいろあって年末年始はHaxeを書いていた。 本当はHaxeからJavaScriptへのコンパイルについて調査するつもりだったはずが、開発環境周りであれがないこれがないと言っていろいろ作った。
RubyにおけるGemはあれどBundlerが見当たらず、ライブラリをインストールするとすぐにディレクトリがゴミ箱のようになるのが気に食わなくて、それを回避する方法をひたすら探していた。
hxenv
rbenvとかplenvと同様、haxe, haxelibのバージョンを管理するツール。使い方はrbenvと完全に一緒なのでrbenvの使い方で調べたら使える。
haxe-buildは用意してない、公式ビルドを拾ってきてexpandしたのをversionsの下に放り込んで、systemをHEADにして切り替えて使っていた。
$ tree -L 3 .hxenv .hxenv ├── shims └── versions └── 3.1.3 ├── haxe ├── haxelib └── std 4 directories, 2 files
haxelibが~/.haxelib
を見ているので、使うバージョンを切り替えるごとに~/.haxelib
をガチャガチャ触る行儀の悪い仕様になっている。お気をつけください。
halc
CLIツール作成ライブラリ。Haxe版bundlerを作ろうとした時の中間生産物。
Golangのcodegangsta/cli · GitHubのような感じで書けるように作っている。実際の使用例は後述のtsuzuraを参照。
tsuzura
haxelib new
が見つかって頓挫したHaxe版bundler。installコマンドまで実装したところで頓挫した。
{ "dependencies": { "lime": "" } }
プロジェクトルートにlibfile.json
という名前でJSONファイルを作成し、そこでtsuzuraをhaxelibから実行する。
$ haxelib git https://github.com/MisumiRize/tsuzura $ haxelib run tsuzura
すると、libfile.json
と同階層に.haxelib
ディレクトリが掘られ、そこに依存定義されたライブラリがインストールされる。結果的にhaxelib new
してからhaxelib install
したのと同じ状況になるので、あとはお好きにどうぞ。
現時点の感触
まだHaxeからJavaScriptへのコンパイルに着手していないが、Haxeという言語そのものは多少クセがあるもののとっつきやすい言語だった。むしろ情報が新旧混在しており、最新版の情報がいまいち不足しているあたりに厳しさを感じる。
とっつきやすい言語だったとはいえ、何かにつまづくとHaxeの内部実装を見ることになりOCamlが待ち受けているあたりはFlowと同じ。
Haxeの売りのひとつとされているマルチプラットフォームはWrite once, debug everywhere的なつらみしか感じなかった。