我正在使用broweserify
,jquery
和jquery-ui
构建项目。所有的库都被npm
拉下来了。以下是我使用browserify-shim
引入jquery' and 'jquery-ui
的方式:
"browserify": {
"transform": [ "browserify-shim" ]
},
"browser": {
"jquery": "./node_modules/jquery/dist/jquery.js",
"jquery-ui": "./node_modules/jquery-ui/jquery-ui.js"
},
"browserify-shim": {
"jquery": "$"
}
一切都像它应该的那样,但我看jquery-ui.js
,第一行代码是
var jQuery = require('jquery');
如何解决这行代码?当我在此之后添加debugger
语句时,始终会解析jquery
。我甚至在我的垫片中更改了jquery
的名称,它仍然解决了。这是怎么回事?
答案 0 :(得分:3)
简短回答:您的package.json
依赖关系
长答案:我也在使用这些npm模块。 jquery-ui
包似乎已被重新调整为require
其内部依赖项。如您所知,jquery-ui
core.js
的第一行是:var jQuery = require('jquery');
,它在项目的npm依赖项中查找名为jquery
的模块。这是由我package.json
中的内容处理的:
"dependencies": {
"jquery": "^2.1.1",
"jquery-ui": "^1.10.5",
}
除了browserify
部分:
"browserify": {
"transform": [ "browserify-shim" ]
},
"browser": {
"jquery": "./node_modules/jquery/dist/jquery.min.js",
"jq-ui": "./node_modules/jquery-ui/jquery-ui.js"
},
"browserify-shim": {
"jquery": "$",
"jq-ui": {
"exports": "jq-ui",
"depends": [ "jquery:jQuery" ]
},
}
我还没想到的是我们是否可以在其他客户端脚本中使用jQuery UI组件。
另见: * Using Browserify with jquery and non-npm plugins * Using Browserify with jQuery plugins
答案 1 :(得分:0)
如果您使用npm安装了jquery和jquery-ui,那么我怀疑它们位于其余依赖项中的某个位置。在这种情况下,你实际上并没有使用“浏览器”“jquery”属性,而是让browserify使用它的非shimmed“require”过程。
“依赖”列表中的“jquery”是什么?如果你完全删除那个“浏览器”“jquery”行怎么办?