upkのβ版ができた
code:bash
$ npm i -g upk
これでベータ版が入ると思う
しかし現状全然納得いったできになっていない
いいかなという部分
zip, upk, gitを落としてきて展開するところはちゃんとできてる
gitの場合、semverレンジから理想的なバージョンにチェックアウトするとかもできている
納得していない部分
モジュールのディレクトリの状態、Upkfile.lock, Upkfileの記述と、実際のモジュールのインストール状況を表す情報が3つもあるので、これらをうまく処理できている自信がない
Upkfileの仕様
CoffeeScriptを採用しているがこれが良いかどうかよく分からない
中央集権的でないパッケージマネージャだとjsonのような決まりきった形式だと厳しい
Upkfile.lockの作り方
現状、upkは以下の順番でUpkfileを都度実行する
1. Dry Run
モジュールのメタデータを収集する
インストール済みか? UpkfileとUpkfile.lockで情報に齟齬があるか?
2. Run
モジュールをダウンロード or gitの場合バージョンアップする
3. Install
ダウンロードしたモジュールのファイルをAssets/にコピーする
各回gitなどのリゾルバの中身が変わっている
1,2,3が終了した後、最新のロック情報をUpkfile.lockに保存する
ぶっちゃけ、
ちゃんとダウンロードされてるのか?
ちゃんとAssets/にインストールされてるのか?
アップデートすべきか?
が正確に分からない
これを解決するためには毎回ぜんぶ消してやり直すのが堅い
再帰的な依存解決ができない(大問題)
ダウンロードしたモジュールがUpkfileを含んでいた場合それらもインストールしなくてはならない
現状その仕組は実装されていない
依存関係木の中で同じモジュールへの依存が出た場合、バージョンレンジが違う場合解決ができない
upk, assetのようなアセット名を自分で決めるタイプのモジュールの場合、実態が同じモジュールでもそれを知るすべがない
URLで判別するか?
ファイルのintegrityで判断するか?