私は最新のクライアントサイドJSエコシステムに追いつき、CommonJSとAMD(関連ツール-browserify、requirejs、onejs、jam、その他多数)について調べています。Javascriptライブラリを作成する場合、最も広くアクセスできるようにモジュール化/パッケージ化するにはどうすればよいですか(理想的には、CommonJS、AMD、および特にどちらにも誓わないユーザーが)。
jQueryのような人気のあるライブラリは、それ自体を構築するために旧式のファイル連結を使用しexports
、グローバルコンテキストに書き込むべきかグローバルコンテキストに書き込むべきかを動的に検出するようです。私は現在同じことをしていますが、主な欠点は(jQueryとは異なり)いくつかのライブラリに依存している場合、推移的なセットを手動で事前に含めるようにユーザーに要求する必要がないことです。(ただし、現在は2つの依存関係しかありません。)そしてもちろん、グローバルな名前空間の汚染。
それとも、コンテキストごとにライブラリの複数のバージョンを生成するのが最もクリーンですか?
パッケージングとパブリッシングについても考えています。いくつかのシステムがありますが、主なものはバウアーであり、フェッチするだけなので対処が簡単です。ただし、コンポーネント(CommonJSが必要)のような他のパッケージシステムもターゲットにすべきかどうか疑問に思っています。
他に知っておくべき関連する側面はありますか?これらすべてについて従うべき良いサンプルプロジェクトはありますか?