Browserify和全局jQuery
我在WordPress主题中使用了browserify。我遇到的问题是,我希望将jQuery包含在“WordPress方式”(即Browserify和全局jQuery,jquery,wordpress,browserify,Jquery,Wordpress,Browserify,我在WordPress主题中使用了browserify。我遇到的问题是,我希望将jQuery包含在“WordPress方式”(即wp\u enqueue\u脚本(“jQuery”))中,以便所有依赖window.jQuery定义(并包含在中)的WordPress插件继续工作 我已经通过在我的Gulpfile.js中设置browserify(conf).ignore('jQuery')成功地使browserify ignore jQuery requires,但这会导致试图以“browserify
wp\u enqueue\u脚本(“jQuery”)
)中,以便所有依赖window.jQuery
定义(并包含在
中)的WordPress插件继续工作
我已经通过在我的Gulpfile.js中设置browserify(conf).ignore('jQuery')
成功地使browserify ignore jQuery requires,但这会导致试图以“browserify方式”包含jQuery的脚本失败
我怎样才能拥有一个全局jQuery对象(包含在头部自己的
元素中),这样WP插件就可以工作,而仍然有var$=require('jQuery')
工作的代码?可能吗
更新:我想我已经接近了。我现在将jQuery“正常”包含在
中。我在我的browserify调用中设置了ignore('jquery')
,以避免它也出现在我的捆绑文件中,并且我正在使用browserify shim(我想这是我稍微丢失的地方)来(我想?)进行设置,以便在执行require('jquery')
时,它使用全局窗口。jquery
对象
这似乎在我自己的代码中起作用,如果我这样做:
var foo = require('jquery');
console.dir(foo);
我确实得到了一个jQuery对象,但我的绑定文件只有几kb,这表明jQuery没有绑定到其中。但是,当我npm安装jquery cycle
并从脚本中要求它时,我从jquery cycle代码中得到一个JS错误,$未定义。奇怪的是,循环脚本与我所做的完全相同,即var$=require('jquery')
,但在那里$
根本不是jquery对象,而只是一个空对象。为什么会这样
更新2:由于某些原因,如果我将cycle插件的require()
更改为需要它工作的确切JS文件。IE我已将require('jquery-cycle')
(这引发了一个错误,基本上说$未定义)更改为require('../node\u modules/jquery-cycle/index.js')
当然,我更愿意继续以“正常”的方式要求事情。你知道为什么这样不行吗
更新3:经过大量挖掘,我终于发现需要将global:true
设置为transform()
调用,以便依赖项也使用带垫片的jQuery。我终于在这里找到了这个解决方案:
我确实得到了一个jQuery对象,但我的绑定文件只有几kb,这表明jQuery没有绑定到其中。然而,当我npm安装jquery cycle并从脚本中要求它时,我从jquery cycle代码中得到一个JS错误,$未定义。奇怪的是,cycle脚本与我所做的完全相同,即var$=require('jquery'),但在这里,$根本不是jquery对象,而只是一个空对象。为什么会这样
如果页面上有多个jQuery,则必须添加全局变量:
var $ = jQuery;
你用Wordpress在同一台主机上编译gulp吗?如果你是这个意思的话,我在本地atm上做所有事情?你甚至可以使用本地不同的主机来运行gulp为Wordpress编译前端文件和http服务器。这里有一个很好的帖子:@Pete谢谢你。不过我还是设法解决了这个问题,只是忘了回答我自己的问题。我基本上做了他在你链接的文章中所做的事情。