18
Nov
11/18 に第41回ZEALOT勉強会を実施しました。
今回のテーマは、Deno紹介シリーズ第3弾として、最近 Deno が npm パッケージをサポートするようになったのでその紹介でした。
Node の package.json における反省点
Node の開発者のライアン・ダール(Deno も作った)による Node.jsに関する10の反省点 の動画では、package.json についての反省点が説明されています。
Deno で npm パッケージを利用できるようになりましたが、この反省点からの改善がされているようです。
Node の package.json における反省点
- require() で module を読み込むときに、local にあるのか global にあるものなのか、npm database にあるものなのか分からない。
- package.json 内にいらない情報が多い。
- License, Repository, Description など
- importするときに、web側と互換性がない。 File と Version を含む URLs だけでよかった。
- node_modules の module 解決アルゴリズムが複雑になりすぎたし、ブラウザ互換性がない。
- require で読み込むときに
.js
のような拡張子が記述されないため不明確になった(ローダー側への負担)。そしてブラウザ互換性がない。
Deno の npm package をサポートするまでの流れ
- Node.jp での反省を踏まえ開発された Deno は素晴らしいものとなりました。いろんな呪縛から解き放たれた!
- しかし多くのライブラリが Node.js で作られ、npm registry から提供されている。npmライプラリが使えないのが、Denoを選択しない理由になってしまっていた。
- Deno の最近のバージョン(1.28.1)から npm パッケージをサポートするようになった。
Deno で推奨される npm Specifiers を使うやり方
- npm install が不要。
- node_module も存在しない。
- package.json を作成する必要がない。コードに追加すれば良いだけ。
- ローカルにライブラリのキャッシュがないか確認してからDLする。2回目以降はキャッシュを利用する。
- @version を指定しない場合は、最新バージョンが適用される。
- サードパーティのライブラリを利用する場合で、ネットワークやファイルなどへアクセスするときにpermission の確認が必須になる。
Deno で npm パッケージを利用する他の方法
- import maps を使う。
- CDNs を利用する。
- Node のパッケージを Deno で使えるように変換してくれる。
- npm.js に入っているものは基本的には全て使えるようになったが、それ以外全てのサポートはされてない。
まとめ
- npm パッケージを Deno で利用できるようになることで、Deno が利用されやすくなると考える。
- Denoはまだ最近のものであるし、Node と比べると開発者やナレッジも少ないので、現場レベルへお薦めはできない。