dlinkでモジュールを管理する
dlink by keroxp.iconを使うとDenoのURLモジュールの管理が楽になります インストール
code:bash
$ dlink -V
0.6.0
使い方
code:bash
$ cd path/to/project
$ dlink
./modules.json not found. Creating skeleton...
dlinkをインストールした後、Denoプロジェクトのルートディレクトリでdlinkコマンドを実行すると、以下のようなmodules.jsonファイルが生成されます
code:modules.json
{
"version": "@v0.35.0",
}
}
またリモートモジュールのエイリアスがvendorディレクトリに生成されます
code:dir
vendor/
https/
deno.land/
std/
testing/
asserts.ts
エイリアスファイルは以下のようになっています
code:vendor/https/deno.land/std/testing/mod.ts
これはES ModulesのExport Aggregationという機能で、exportをリダイレクトしてくれます importする側からは、このファイルをimportします
code:test.ts
import * as asserts from "./vendor/https/deno.land/std/testing/asserts.ts"
このエイリアスファイルをimportすることで、バージョンを省略してimport出来るようになります
バージョンアップ
モジュールのバージョンを上げたいときは、modules.jsonを直接編集してdlinkを実行します
code:modules.json
{
"version": "@v0.36.0",
}
}
code:bash
$ dlink
エイリアスファイルはこのように変更されます
code:vendor/https/deno.land/std/testing/mod.ts
これによって、importする側のimport文を変更することなくリモートモジュールをアップデートすることができます
default export
なぜかExport Aggregationはdefault exportをリダイレクトしてくれませんが、リンク先がdefault exportを持っていた場合、エイリアスにも反映されるようになっています
code:vendor/https/dev.jspm.io/react/index.js
export default dew;
小ネタ
対象のjsファイルがdefaut exportを持っているかどうかはTSを構文解析しないと行けませんが、実のところ面倒なのでファイルの最終行から順に"export default"の文字列が存在するかを見ているだけだったりしますkeroxp.icon
理由: export defaultはどうせ最後の方にあるから