2017-09-26 8 views
0

基本的には、CDN(Kendo UI)のライブラリを参照して使用する多数の従来のWebアプリケーションがあります。そのような要求をリモートホストに取り除く作業がありますので、アプリケーションが参照する単一のローカルjsファイルにすべての依存関係を収集する既存のnpmスクリプトタスクにライブラリを組み込むことができます。モジュール化されたライブラリのスタンドアロンの外部依存関係jsファイルを作成するにはどうすればよいですか?

this libraryは、(jqueryやangularなどの他のライブラリとは異なり)すぐに使用できるプリコンパイル済みのjsファイルを提供していませんが、モジュール化されており、webpackまたはbrowserifyを使用する必要があります。

私たちのレガシーアプリケーションでは依存関係の読み込みにモジュラーアプローチを使用していないため、書き換えの対象がありません。モジュール化されたライブラリを同等のjsファイルにパッケージしたいと思います単純に<script>参照を介してアクセスしてください。

私はbrowserifyを使って、ライブラリへの参照が単にrequireのソースjsファイルからコンパイルしようとしましたが、アプリケーションのコンパイルされたファイルを参照すると、アプリケーションのライブラリ関数が利用できないため、エラーが発生します。

誰でも正しい方向に向けることができますか?

+0

あなたはwebpackを使用して正しいトラックで、ライブラリの公開をするだけです。 libが純粋にモジュールベースのものであれば、あなたはあなた自身のグローバル名を作る必要があります。 jQueryはあなたの剣道UIのためにjQuery&$をしました。おそらくあなたはそれをグローバルな剣道などに公開することができます。 – Keith

+0

ありがとうKeith。私はそれが剣道でちょっと変わったかどうかは分かりませんが、グローバル変数 'kendo'は、私が上記で述べたbrowserifyコンパイルされたファイルによって設定されているようですが、jQuery拡張関数(例えば' $(...)。kendoDropDownList () ')はグローバルには利用できません(browserifyでコンパイルしたjsファイルの中で利用可能です)。何か案は? –

+0

はい、ほとんどの場合、jQueryはkenduのUIの中に依存している可能性があります。デフォルトでは、2つのバージョンのjQueryが完成します。ここではjQueryが外部になるようにwebpackをセットアップします。あなたのwebpack configの中に、 'externals:{jquery:" jQuery "}を入れてください。小文字のjqueryに注意してください。通常はノードの所要量を小文字にしておきますが、KenduのUIにrequire( 'jQuery')が必要な場合は、変更する必要があります。 – Keith

答えて

1

モジュールベースのライブラリを使用していて、スタンドアロンで使用したい場合は、2つのことを行う必要があります。

  1. モジュールをグローバルスコープに公開します。エクスポーズローダーhttps://github.com/webpack-contrib/expose-loaderを使用しているか、ウィンドウオブジェクトに割り当てているだけかもしれません。

  2. また、モジュールにもスタンドアローンを含むライブラリを使用している場合は、これらについてwebpackに伝える必要があります。

例:

{ 
    externals: { 
    jquery: 'jQuery' 
    } 
    // other stuff.. 
} 

最後にこれらを含めるときは、スクリプトタグの順序を覚えておいてください。例えば。バンドルされたjavascriptの前にjqueryを含めてください。

+0

偉大なもの、感謝キース。 –