2016-03-20 8 views
1

私は私のワードプレステーマでbrowserifyを使用しています。私が問題になっているのは、「WordPressの方法」(つまりwp_enqueue_script('jquery'))を含めると、window.jQueryに依存するすべてのWordPressプラグインが定義されている(そして<head>に含まれています)ということです。Browserify and global jQuery

私はbrowserifyを無視することができました。jQueryを無視するだけでは、私のGulpfile.jsにbrowserify(conf).ignore('jquery')を設定するだけで済みますが、これはスクリプトがjQueryに "browserify way"を失敗させようとしています。

WPプラグインが機能するように、グローバルなjQueryオブジェクト(独自の<script>要素に含まれています)を持っていても、var $ = require('jquery')のコードを実行するにはどうすればよいですか?出来ますか?

更新:私は多少近づいたと思う。私は現在、<head>にjQueryを「通常」含めています。私はignore('jquery')私の束縛されたファイルで終わるのを避けるために私のbrowserify呼び出しに設定しました、私はbrowserify-shimを使用しています(ここで私は少し失われています)(私は思う?)あなたが行うときにそれを作るrequire('jquery')代わりにグローバルwindow.jQueryオブジェクトを使用しますか?

これは私がしなければ、自分自身のコードで動作するようです:

var foo = require('jquery'); 

console.dir(foo); 

私はjQueryオブジェクトを得るか、まだ私のバンドルされたファイルはわずか数キロバイトの示すjQueryのそこにバンドルないです。 しかし、私はnpm install jquery-cycleと私のスクリプトから、私は$が未定義のjqueryサイクルコードからJSエラーを取得する必要があるとき。奇妙な部分は、サイクルスクリプトは、ちょうど私は、var $ = require('jquery')ですが、そこに$ではありませんは、すべての代わりに、空のオブジェクトです。どうしてこれなの?

更新2:何らかの理由で、サイクルプラグインのrequire()を変更して、正確なJSファイルを必要とするようにしました。 IE require('jquery-cycle')(基本的には$ is undefinedというエラーが投げられました)をrequire('../node_modules/jquery-cycle/index.js')に変更しました。

私はもちろん、物事を「普通の」方法で要求することを非常に好むでしょう。それがなぜうまくいかないのですか?

更新3:多くの掘り下げの後、最終的に、global: truetransform()コールに設定する必要があることが判明しました。依存関係の依存性がshimmed jQueryを使用するようになりました。私は最終的にここに、この解決策が見つかりました:Shimming dependencies of dependencies with browserify-shim

+0

をあなたはWordpressのと同じホスト上でがぶ飲みをcomplingていますか? – Undefitied

+0

それはあなたが意味するものなら、私は地元のすべてのことをやっていますか? – powerbuoy

+0

gulpを実行してフロントエンドファイルをコンパイルし、httpサーバをWordpress用にコンパイルするために、ローカルの別のホストでも使用できます。 – Undefitied

答えて

-1

私はjQueryオブジェクトを得るかを、まだ私のバンドルされたファイルは、わずか数キロバイトの示すjQueryのそこにバンドルされていないです。しかし、私がnpmにjquery-cycleをインストールしてスクリプトからそれを要求すると、$が定義されていないjqueryサイクルコードからJSエラーが発生します。変わった部分は、サイクルスクリプトはまさに私がやったこと、つまりvar $ = require( 'jquery')ですが、そこに$はjQueryオブジェクトではなく、空のオブジェクトです。どうしてこれなの?

ページ上に複数のjQueryを持っている場合は、グローバル変数を追加する必要があります。

var $ = jQuery;