【发布时间】:2015-10-05 21:38:59
【问题描述】:
我在 Browserify 中遇到了一个关于 jQuery 插件的令人费解的问题。由于我有多个单独的子应用程序包,因此我的 HTML 中有一些全局库作为 <script> 标记以防止重复。
我正在使用 gulp、browserify-shim 和 babelify 创建我的捆绑包。
package.json内:
"dependencies": {
"jquery.cookie": "^1.4.1",
...
},
"browserify-shim": {
"jquery": "global:jQuery",
...
},
"browserify": {
"transform": [
"browserify-shim"
]
}
在base.html 内:(在生产中这些将是 CDN 链接)
<!--[if lt IE 9]><script src="/bower_components/jquery-legacy/jquery.min.js"></script><![endif]-->
<!--[if gte IE 9]><!-->
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
<!--<![endif]-->
在我的一个源文件中:
import $ from 'jquery'; // this works
import 'jquery.cookie'; // this crashes browserify
错误信息:
Error: Cannot find module 'jquery' from '/path/to/node_modules/jquery.cookie'
jQuery 是 not 与 npm 一起安装的,因为我不希望它滚到我的包中。
我猜这里的问题是jquery.cookie.js 中有一个呼叫require('jquery') 没有得到解决。
如何使用 browserify-shim 将全局 jQuery 实例的存在“伪造”为插件?
注意:This solution 不能满足我的需求,因为 jQuery 会被打包成许多包。
【问题讨论】:
标签: jquery browserify jquery-cookie browserify-shim