2020年7月26日日曜日

Node.jsのモジュールをDenoに対応させる方法

前回、Node.jsのモジュールをDenoに対応すべく、import文の拡張子を解決するツールを作りました。

ただし前回の記事でも書いたとおり、あのツールを使うだけでDeno対応できるモジュールは、外部に依存せず自己完結しているものだけです。

じゃあ外部に依存しているモジュールはDeno対応できないのか、と考えてみました。

やり方

Webpackで1つのファイルにバンドルするだけです。
1つにまとめてしまえばimport文自体が消えるので、拡張子のことを考えずに済みます。

勿体つけましたが別に大したことはない。多分誰かが既に考えてる方法です。

ただし、この方法でも完全ではなく、いくつか気をつけないといけないことがあります。

コアモジュールはバンドルできない

コアモジュールはWebpackを使ってもバンドルできません。
モジュールが直接使っている場合はもちろん、依存モジュールが使っている場合も不可です。

ただしポリフィルが存在しているコアモジュールquerystring等)はバンドルできます。

ライセンスに注意

例えば依存モジュールがGPLの場合は、バンドル後のモジュールもGPLにしなければいけません
それだけではなく、依存モジュールの中にGPLとCDDLのような非互換なライセンスを含むものがあった場合、ライセンス上はバンドルできません。

TypeScriptのモジュールにならない

WebpackでバンドルしたファイルはJavaScriptなので、もともとTypeScriptで書いていた場合はせっかくの型情報が消えてしまい、利用者にとって不便になります。

d.tsファイルを用意して@deno-typesを使ってもらうとか、export部分だけでもがんばって型情報を手動で追加するとかの工夫が必要です。
というわけでがんばれ

0 件のコメント:

コメントを投稿