THREE.jsを依存関係とするモジュールを構築しています。私は、依存関係としてTHREEを含める最も良い方法を試して、モジュールとモジュールのユーザーがアクセスできるようにしています(ユーザーはプロジェクト内でTHREEライブラリにアクセスする必要があります)。私はこの作品を作る考え出した2つの方法があります。ユーザーがnpmモジュールの依存バージョンを管理できるようにする
ワン:
、モジュールの依存関係としてTHREEの追加モジュールでライブラリ全体をインポートし、そのようなグローバル変数として追加します:ここ
import * as THREE from 'three';
window.THREE = THREE;
欠点は、私が使用しているTHREEのバージョンの責任だということではありませんし、また、ライブラリ全体がインポートされていること(THREEは最近、モジュラービルドに切り替えたので、含まれるように、もはやneccessaryですライブラリ全体)。
二
:はとは、ユーザーが自分のプロジェクトの依存関係として追加する必要がモジュールの依存関係としてTHREEを追加します。
import { Scene, Camera } from 'three';
そして、ユーザーはファイルサイズが小さく、その結果、彼らのプロジェクトに必要なものをインポートすることができます:ここでの考え方は、私は今私がプロジェクトから必要なものだけをインポートすることができるということです。
ここで問題となるのは、3つのコピーがインストールされていることです。これは潜在的に異なる互換性のないバージョンです。インストールされているバージョンの3つを管理できるように、モジュールをトップレベルのモジュールに向ける方法はありますか?
は、あなたのモジュールに依存に渡すため、ユーザーが責任を作っています。あなたの側では、彼らがあなたに与えた 'three.js'を使用します。必要なモジュールを追加するのを忘れた場合は、エラーを返します。 – DrakaSAN
これを今見てみると、モジュールに依存関係を渡す方法については空白が描かれています。何か提案はありますか? – looeee
簡単な方法:あなたのモジュールにグローバル変数として配置し、それがライブラリであるかのように他の場所で使用するパラメータをとる "init"関数を公開します。そうでなければ、 'module.exports'全体を関数として設定し、そのパラメータをライブラリとして使用することで、require自体からパラメータを取得できるはずです。 – DrakaSAN