2016-09-15 18 views
0

私はNodeまたはWebPackサーバサイドを使用していませんが、npmからのモジュールを今も使用したいと思います。私のクライアント側ではrequirejsを使用しているため、AMD(推奨)またはCommonJSのいずれかのモジュールが必要になります。npmからスタンドアロンAMD/CommonJSモジュールとしてモジュールをフェッチする方法

私がarchieveしたいのは、引数としてモジュール名+外部依存関係をとり、他のすべてのdepsを含むモジュールを作成するスクリプトです。

など。

sh npmtoamd.sh draft-js react react-dom 

draft-jsを含むES5 AMDモジュールと、reactおよびreact-domを除くすべての依存関係を作成します。もしそれができないならば、例えば。 cssファイルと他の非jsコンテンツをモジュールに含めて、例えばそれらを提供する。 draft-js.cssは許容されます。

私はNodeまたはWebpackサーバサイドを使用しませんが、上記のスクリプトではnpmとwebpackを使用できます。

npmからモジュールを取得するのは簡単な部分ですが、webpackの部分をどうやって行うのかはかなり分かりません。私はそれが可能であるという事実を知っています。私が以前に助けてそれをやり遂げたので、どこにいてもそれがどうなったのか分かりません。

+1

を実行して、次のmain.js

define('FOOBAR', ['<modulename>'], function(Foo) { return Foo; }); 
  • を作成するJS

    module.exports = { entry: './main.js', output: { filename: 'bundle.js', library:"<modulename>", libraryTarget:"amd" }, externals: { react: "React", "react-dom": "ReactDOM", immutable:"Immutable", moment:"Moment" } }; 
  • npm install <modulename>

  • 。 – elmigranto

  • 答えて

    0

    私が働いて、それを持って最終的にNPMが代わりにバッチスクリプトのJavaでブツフェッチやってしまったと。しかし、ブラウザ機能は動作しませんでした。

    相続人は、私が何をすべきか:

    1. は以下のwebpack.configを作成します。browserifyをチェックwebpack main.js

    1

    私はelmigrantoがコメントしたように、Browserifyはあなたが探しているものだと思います。名前とは異なり、ブラウザ環境とノード環境の両方で使用できます。簡単に言えば、次のようになります。

    Browserifyは、ソースコードの抽象構文ツリーの静的解析を使用して見つかったrequire()呼び出しを検索し、それを検索するエントリポイントファイルから開始します。

    文字列を含むrequire()呼び出しのたびに、browserifyはそれらのモジュール文字列をファイルパスに解決し、dependencyグラフ全体が訪れるまでrequire()呼び出しのファイルパスを再帰的に検索します。

    各ファイルは、静的に解決された名前を内部IDにマップする最小のrequire()定義を持つ1つのjavascriptファイルに連結されています。

    これは、生成するバンドルが完全に自己完結型であり、アプリケーションが処理する必要があるすべてが非常に無視できるオーバーヘッドであることを意味します。

    demosのいくつかをチェックすると、すべての依存関係(およびそれらの共依存関係)が1つのファイルにまとめられていることがわかります。
    A簡単な例:deamdifyを使用してもBrowserify supports it AMDを使用してに関しては

    browserify main.js -o bundle.js 
    


    使用AMDモジュールは:

    browserify -t deamdify main.js -o bundle.js 
    
    関連する問題